본문 바로가기

dev/Java&Spring

jib로 springboot 애플리케이션 컨테이너화 + registry 등록 애플리케이션을 컨테이너화 시키기 위해서는 docker 를 쓰는 시나리오에는 일반적으로 docker가 설치된 환경에서 dockerfile 을 만들어 그것을 이미지로 빌드하는 것이 보통이다. 구글에서 나온 jib 와 maven 플러그인, gradle 플러그인을 활용하면 애플리케이션의 빌드 과정에서 자동으로 컨테이너 이미지를 만들고, 그것을 registry 에 등록할 수 있다. jib란 docker daemon 없이도 Java 애플리케이션을 Docker 혹은 OCI 규격의 컨테이너 이미지를 만들어 주는 도구이며, maven 플러그인 및 gradle 으로 제공되어 Dockerfile 에 대한 별도의 지식 없이도 애플리케이션을 이미지로 만들 수 있다. 또한 JAR를 single layer 로 빌드하는 것이 아니라.. 더보기
Java Authentication and Authorization Service (JAAS) - 요약 5월부터 알고리즘을 공부하겠다는 맹세가 무색하게, 연초부터 하던 일이 매우 바빠져서 5,6,7월을 일로만 보냈다. 연초부터 약간씩 구성해오던 Kafka를 바탕으로 하여 그것과 연계된 서비스들을 이리저리 만들어내고 붙이고 했는데, 방화벽 레벨에서 제어를 하는 것과 별개로 Kafka의 보안 기능을 활용하고 싶다는 생각이 들어서 조금씩 보고 있는 중이다. Kafka의 보안 기능들은 JAAS 와 관련이 있으므로, Kafka의 보안 기능을 활용하기에 앞서서 해당 내용을 좀 정리하고 넘어가려고 정리 해 봄. 보통은 인증/인가에 관해서는 네트워크상에서 인증/인가 위주로 신경 썼고... 애플리케이션 자체의 권한에 대해서는 예전에 설치형으로 판매하던 솔루션에 대해서 구현한 적이 있긴 한데, 이걸 정리하면서 느낀 점은 그.. 더보기
Spring Cloud Gateway 2.1.0RELEASE 레퍼런스 2019년 5월 12일, 2.1.0.RELEASE 버전 기준 https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.1.0.RELEASE/single/spring-cloud-gateway.html Spring Cloud Gateway 2.1.0.RELEASE This project provides an API Gateway built on top of the Spring Ecosystem, including: Spring 5, Spring Boot 2 and Project Reactor. Spring Cloud Gateway aims to provide a simple, yet effective way to route to APIs and .. 더보기
netflix hystrix-dashboard 가 뜨지 않을 때 Spring Cloud 기반으로 MSA를 구현하기 위해 요 며칠 고군분투 중이다. 전체적인 정리는 나중에 해야겠지만, 방금 한 번 삽질을 한 김에 정리를 짧게 남겨보려 한다. 일단 배경을 살펴 보자면 hystrix 라고 하는 Netflix OSS에 포함되어 있으며, Spring Cloud 에도 포함된 지연 내성 및 장애 내성을 갖게 해 주는 라이브러리이다. 이에 대해서는 나중에 자세히 다룰지도 모른다. hystrix 에 관한 부분은 아니고, hystrix 의 상태를 모니터링 및 시각화 해 주는 hystrix-dashboard 에 관해 다룰 것인데 일단 아래와 같이 # pom.xml 안에 포함된 의존성 # 상략... org.springframework.boot spring-boot-starter-actua.. 더보기
Spring에서 Client Authentication (two-way TLS/SSL) 구현하기 https://springboot.cloud/19 에서는 내부망 혹은 사설인증서를 통해 TLS/SSL을 구현할 경우 CA를 신뢰할 수 없어 검증을 회피하는 로직을 적어보았다. 이 경우는 HTTPS를 통해 전달 과정에서 암호화는 유지가 되지만, 이것이 신뢰할 수 있는지 없는지는 신경을 쓰지 않는 방법이다. 반대로, 클라이언트와 서버간에 매칭이 되는 인증서를 소유하고 있지 않다면 서로 접근을 아예 거부하는 방법이 필요할 수도 있다. 뭔가 정보 수집을 하는 서버-에이전트간에 인증된 에이전트에서만 정보를 받아들이게 한다던가 뭐 그런 경우로 쓰고 있는데, 간단하게 구현을 할 때는 HTTP HEADER에 AUTH에 관한 부분을 삽입해서 그걸 체크하거나, 좀 더 복잡한 구현이 필요하다면 해당 헤더에 들어가는 값을 주.. 더보기
Spring에서 insecure SSL 요청(RestTemplate, WebClient) 회사의 네트워크 환경이 프록시를 통해서 외부로 나가는 환경이며, 내부망으로 구성된 환경이 많다보니 TLS/SSL과 관련하여 꼭 self-signed 인증서와 관련된 문제를 마주치게 된다. proxy를 통해서 외부와 접속할 경우에는 proxy에서 SSL 인증서가 회사의 사설 인증서로 교체되는 것이 원인이며 내부에서 필요에 의해 SSL 연결을 지원해야 할 경우에는, 내부에서는 self-signed 인증서를 발급하여 사용하기 때문이다. 어떤 툴을 쓰거나, 아니면 개발을 할 때도 꼭 시작은 이 문제를 짚고 넘어가는 것이 그 다음인데 오늘은 Spring 에서 마주치는 경우를 다뤄보려 한다. Spring4 까지 사용하던 RestTemplate는 HTTP(s)요청을 날리기 위해 JDK HttpURLConnection.. 더보기
스프링마이크로서비스 2/e 책 리뷰 http://mobile.kyobobook.co.kr/showcase/book/KOR/9791161751108?orderClick=Ow2 세 줄 요약 먼저 : 소스 코드나 실습 위주의 책 아니다. 마이크로서비스 자체의 이론이 많다 비즈니스 케이스에 적용한 도식이 많아 좋았다. 이 책은 사둔지 꽤 된 책인데 이제야 다 읽었다. 새 프로젝트에서 내가 맡은 부분을 만들기 위해 어떤 기술 스택을 선정할까 많이 고민하다 읽었다(go를 쓸까... kotlin+boot로 맨날 하던 짓을 해볼까 java로 안 해본 spring cloud를 할까) 처음 이 책을 고르던 시점에는 스프링5를 접한지 얼마 되지 않은 시점이었고 마이크로서비스에 대한 관심이 개인적으로나 아니면 회사에서나 슬슬 커지던 시기라서, 마이크로서비스 아.. 더보기
Expression-based security 를 위한 커스텀 메소드 표현식 만들기 Spring Security OAuth를 이용해 토큰 발급 서버를 https://github.com/gnu-gnu/spring-boot-oauth-authserver 에 만들어 보았다.리소스 서버도 구현 중인데, 일단 필요한 기능을 임시로 구현하면서 이미 완성된 토큰 발급 서버에 추가해서 구현하고 있다. 현재 구상하고 있는 모습은 1. Web Security 는 각자 서비스에서 구현하도록 한다.2. Spring Security OAuth의 Resource Server는 JAR를 Dependency에 넣으면 자동으로 구성한다.인데 2와 같이 구현할 경우 JAR를 의존성에 넣기만 하면 리소스 서버가 구성되어 편리할 수는 있겠으나 @EnableResourceServer를 이용한 Resource Server를 .. 더보기
SRPING BOOT에서 JSP 사용하기 (다른 곳에 개설 해 뒀던 블로그에 딱 하나 써뒀던 포스트인데 이곳으로 옮겨서 약간 수정한 것) JAVA 기반의 WEB 개발은 SPRING을 거의 쓰다시피 했는데 요즘은 SPRING BOOT를 쓰고 있다. SPRING을 쓰면서 가장 크게 느꼈던 점은 PHP나 node.js로 웹개발을 할 때에 비해서 초기 세팅에 들어가는 노력이 너무 커서 캐주얼하게 쓸 엄두가 나지 않았다는 점인데 SPRING BOOT는 그 점에 있어서 매우 간편하게 웹개발을 할 수 있어서 장점이 많다. SPRING FRAMEWORK를 기반으로 SPRING MVC 쓸 때와 달리 가장 큰 차이점은 boot는 static폴더와 templates 폴더가 있어서 리소스 파일(css 나 js)은 static 폴더에 템플릿(thymeleaf나 vel.. 더보기