Jib 란? Jib는 도커 데몬 없이 Java 앱의 OCI 이미지( 도커 이미지 )로 만들어주는 플러그인 입니다. Maven, Gradle과 함께 사용할 수 있습니다. 그럼 기존의 Docker 빌드로 이미지를 생성하는 것과 Jib 빌드로 이미지를 생성하는 것을 비교해 보겠습니다. Docker에서는 Dockerfile을 정의를 하고, docker build 명령으로 도커 이미지를 만들게 됩니다. 자바 앱의 경우에는 자바 소스를 빌드하여 jar, war를 생성 한 뒤에 Dockerfile에 이 파일을 이용하여 도커 이미지를 만들게 됩니다. 언뜻 보면 간단해 보이지만, 이를 자동화 하기에는 조금 번거로운 것이 사실입니다. 이를 개선하기 위해 Jib가 만들어졌으며, 위의 그림에서 보듯이 Dockerfile 없이..
Spring Boot JPA(2.x.x 기준)에서 사용 가능한 Connection Pool은 아래의 3가지가 있습니다. HikariCP Tomcat pooling Datasource Commons DBCP2 Spring Boot 1.x.x 에서는 Tomcat을 Default로 사용하였으나 Spring Boot 2.0.0 에서부터 default JDBC connection pool(이하 'CP')을 Tomcat에서 HikariCP로 변경하였습니다. 그래서 spring-boot-starter-jdbc, spring-boot-starter-data-jpa를 사용하면, HikariCP(가장 높음) -> Tomcat pooling -> Commons DBCP2 의 우선 순위로 CP가 적용 됩니다. 위의 우선순위를..
기존 RPC의 컨셉을 그대로 계승하며, RPC의 단점을 보완하여 Google 에서 만든 프레임워크 입니다. proto 파일에 IDL을 정의해주면, gRPC와 Protocol Buffer(이하 PB) complier에서 자동으로 Protocol Buffer(PB)코드, 서비스와 Stub 코드를 작성해주어 개발자는 생성된 코드로 로컬 함수를 호출하듯이 클라이언트 또는 서버에 요청, 응답을 주고 받을 수 있습니다. 서버에서는 생성된 인터페이스를 구현하고, 클라이언트 에서는 Stub을 이용하여 Server와 통신을 하면 됩니다. PB를 사용하여 직렬화 속도가 더 빨라지고, 데이터의 크기가 작아져 많이 사용하는 RESTful API( w/ JSON ) 보다 성능면에서 더 뛰어납니다. 특히 마이크로 서비스에서는 모..
목차 이전 포스팅 Google Protocol Buffer 이 포스팅에서는 Protocol Buffer 를 사용하면서, 상세하게 알아두면 좋을 만한 내용을 정리해두었습니다. ( 글은 Java를 기준으로 작성 되었습니다. ) 필드 숫자 할당 // .proto file message Person { optional string name = 1; optional int32 id = 2; optional string email = 3; } // project code using PB Code Person john = Person.newBuilder() .setId(1234) .setName("John Doe") .setEmail("jdoe@example.com") .build(); output = new Fi..
목차 개요 Protocol Buffer는 언어 및 플랫폼 중립적으로 사용할 수 있는 구조화된 데이터를 직렬화 할 수 있는 확장가능한 메커니즘 입니다. 데이터를 직렬화 하여, 데이터의 크기를 줄이고 빠른 파싱 속도를 장점으로 실제 구글 내부에서도 다양하게 사용을 하고 있으며 ( gRPC, Google Cloud, Envoy Proxy 등 ) Avro 파일 포맷에서도 사용 하고 있습니다. Google에서 공식적으로 여러 언어에서 지원(오픈소스)을 할 뿐만 아니라, Third-Praty에 의해 여러 언어에 대해서 지원을 하고 있습니다. Protocol Buffer는 .proto 파일, 컴파일러, protocol buffer 라이브러리로 구성이 됩니다. : .proto 파일에서는 직렬화 할 메시지를 정의 : 컴..
API 요청의 처리가 오래 걸리게 되면, java.net.SocketTimeoutException 가 발생합니다. tomcat 문서를 보면, defualt 값은 1분으로 되어 있습니다.( tomcat 8.5 버전 기준 ) Spring의 property 파일( application.yaml )의 timeout 시간을 늘려주면 됩니다. -1을 설정하면 timeout이 무한대가 되어 timeout이 발생하지 않습니다. 그렇지 않으면 ms 단위로 원하는 시간을 입력해주면 됩니다. server: tomcat: connection-timeout: -1
Jackson objectmapper는 Java 오브젝트와 JSON 간에 직렬화, 역직렬화를 해주는 역할을 합니다. Jackson 사용을 위해 의존성을 추가합니다. databind는 jackson-annotations, jackson-core 의존성도 포함되어 있습니다. com.fasterxml.jackson.core jackson-databind 2.13.2.2 Cat 클래스를 이용하여 직렬화, 역직렬화를 해보겠습니다. @Getter @Setter @NoArgsConstructor public class Cat { private String name; public Cat(String name) { this.name = name; } } Object to Json ObjectMapper objectMap..
Jackson으로 객체를 직렬화 할 때, 아래와 같이 에러가 발생할 때가 있습니다. 직렬화를 할 때, 객체의 getter를 사용하여 변환을 하는데 이 때 에러가 발생하면 아래와 같은 예외가 발생합니다. Exception in thread "main" com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class com.example.springapp.animal.Cat and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationFeature.FAIL_ON_EMPTY_BEANS) 코드를 보면 ..
alt( option ) + drag 1~3행의 두 번째 커서를 동시에 편집하기 위해서, 안에 커서를 두고 alt( option )를 누른 상태에서 마우스를 눌러 아래 또는 아래로 드래그를 하면 아래와 같이 여러 줄에 같은 위치에 커서가 위치하게 됩니다. ( sublime text 뿐만 아니라 많은 편집 툴에서 사용할 수 있는 방법입니다. ) 텍스트를 입력하면, 아래와 같이 커서가 있는 행에 동시에 입력이 됩니다. shift + ctrl( command ) + L 편집할 줄을 선택 한 뒤에, 위의 단축키를 입력하면 동시에 편집이 가능합니다. 여러 줄의 마지막에 텍스트를 동시에 입력하고 싶을 때는 alt( option ) + drag로는 할 수 없어서 이 단축키를 활용하시면 됩니다.
- Total
- Today
- Yesterday
- Kibana
- docker
- gradle
- tomcat
- Postman
- scala
- spring boot
- Index
- Linux
- maven
- install
- Git
- Java
- elasticsearch
- apm
- logstash
- JSON
- mac
- Spark
- Size
- intellij
- Container
- Log
- SpringBoot
- spring
- error
- plugin
- JPA
- Filter
- AWS
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |