Development Experience (85) 썸네일형 리스트형 JAVA <-> gRPC 객체 (feat. Timestamp) # JAVA 객체 -> gRPC Proto 객체 JAVA 객체를 gRPC proto 객체로 컨버팅을 할 때 ObjectMapper 클래스를 사용할 수 있다. 이 ObjectMapper로 JAVA 객체를 Serialize하여 JSON String을 만들고 다시 이 JSON String을 gRPC proto 객체로 해석하는 것이다. MyJavaObj javaObj = new MyJavaObj(); ObjectMapper mapper = new ObjectMapper(); # JAVA 객체 -> JSON String json = mapper.writer().writeValueAsString(javaObj); # gRPC proto 객체의 builder를 얻어옴 Builder builder = MyGrpcPro.. MyBatis Mapper 사용 안하기 (exclude DataSourceAutoConfiguration) Spring-Web-Application 개발을 진행하면서 회사 공통으로 쓰고 있는 JAR 파일을 첨부하게 되었다. 이 JAR 파일에는 우리 개발팀이 공통으로 쓰는 모듈들이 들어가있는데 주로 DB, gRPC, Util 등의 기능들이 포함되어 있다. 공통된 기능을 내가 따로 개발할 필요없이 이미 만들어진 것을 가져다 씀으로써 편리함과 DRY(Don't Repeat Yourself) 를 얻었지만 예상 못한 문제가 있었다. 바로 MyBatis를 포함한 프로젝트는 어딘가에 Mapper 클래스가 존재해야 한다는 것이었다. 헐? 지금 개발하고 있는 Spring-Web-Application은 DB 기능을 사용하지 않는데? 이 Application은 사용자에게 REST API 인터페이스를 제공하고 요청이 들어오면 다른.. Docker Swarm을 띄워보았다 회사에서 Kubernetes 대신 Docker Swarm으로 Orchestration을 하기로 결정되었다. 상대적으로 시간이 여유로운 내가 Docker Swarm을 담당하게 되었다. 여러개의 프로젝트를 Docker Swarm 환경에 띄우면서 겪은 삽질을 기록겸 공유겸 남겨둔다.. #00. 순서 1. docker-compose.yaml 파일로 Docker Image를 BUILD 2. Docker Swarm Manager, Worker 등록 3. Docker Swarm Manager Node에서 Private Repository 구동 4. docker stack deploy 명령을 통해 Docker Swarm 상에 Docker Image들을 구동 #01. docker-compose.yaml 파일로 Docke.. Docker Swarm vs Kubernetes (feat. Container Orchestration) 이 글은 IBM의 Docker Swarm vs. Kubernetes: A Comparison을 읽고 정리한 글입니다. Container Orchestration을 하려면 Docker Swarm과 Kubernetes 중 어느 것을 사용하는 게 좋을까? 우선 Container가 뭔지, Container Orchestration이 무엇인지 정리하고 넘어가자. Container는 우리가 배포하고자 하는 서비스 프로그램(app)과 이 프로그램이 의존하고 있는 모든 의존 프로그램들(dependencies)을 패키지 형태로 묶는 방법을 말한다. 이렇게 프로그램에 필요한 모든 것을 하나의 패키지로 만들면 언제 어디서든 그리고 docker를 지원하는 어떤 Runtime 환경에서든 프로그램을 실행시킬 수 있다. Conta.. MyBatis 변수명을 잘 썼는데도 There is no getter for property named 오류가 뜬다면.. MyBatis의 Mapper.xml 파일을 작성할 때 태그에서 keyProperty 속성으로 여러개의 key값을 지정하는 경우가 있다. 예를들어 ... 처럼 말이다. 이때 변수명을 잘 입력했음에도 org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named... 오류가 뜨는 경우가 있다. 이 경우에는 .. MyBatis SelectKey returned no data 에러 MyBatis를 이용한 프로젝트에서 객체 하나를 Maria DB에 insert하고 그 키값을 얻어오고 싶었다. 키값은 AUTO_INCREMENT 속성 대신 DB에서 직접 생성한 UUID 값을 사용하기로 하였는데, 태그에 추가로 태그를 넣어주어야 했다. 그래서 아래와 같이 작성했는데 SELECT UUID() as MY_OBJECT_ID FROM MY_CUSTOM_TABLE INSERT INTO MY_CUSTOM_TABLE ( MY_OBJECT_ID ) VALUES ( #{myObjectId} ); But... 어쩐 일인지 계속 "SelectKey returned no data" 에러만 계속 발생하였다. 테스트해보니 테이블에 데이터가 있을 경우 이 에러는 발생하지 않고 테이블이 비어있는 경우에만 이 에러가 .. IntelliJ 기참조된 maven repository 내용 업데이트 우리 회사는 gRPC로 통신 프로토콜을 정의하여 협업을 진행한다. gRPC 명세가 변경되면 새로 빌드된 SNAPSHOT이 소스 저장소인 NEXUS에 올라간다. 개발자가 각자의 프로젝트에서 개발을 할 때에는 NEXUS에 올라간 최신 SNAPSHOT 버전을 maven으로 import하여 사용한다. 오늘 아침 gRPC 명세가 변경되어 있었기 때문에 나의 프로젝트로 새로운 SNAPSHOT을 땡겨와야했다. 내가 쓰는 IntelliJ(2021.2.3 Community Edition)에서 기참조된 maven repository 내용을 업데이트하려면 아래와 같이 진행하면 된다. 1) pom.xml 우클릭 2) maven탭에 마우스 hover 3) 오른쪽에 메뉴가 하나 새로 뜨는데 여기서 Reload Project 클릭.. 도커라이징(Dockerizing) 이란? 도커 관련 업무를 시작하면서 "도커라이징"이라는 용어를 알게 되었는데 한국어로 된 설명이 마땅히 없어서 잠시 끄적여본다.. 이 글에 따르면 도커라이징(Dockerizing)은 Docker 컨테이너를 사용하여 응용프로그램(application)을 패킹(packing), 배포(deploying), 실행(running) 하는 전 과정을 말한다. 한 마디로 우리가 작업하던 Docker 관련 일들이 모두 도커라이징 과정의 일부라고 보면 된다. 이전 1 2 3 4 5 6 ··· 11 다음