본문 바로가기

분류 전체보기48

[AWS] ECR, Docker Image Push & Pull 하기 SWM 프로젝트를 개발하고 이후에 배포하는 과정에 있어서, AWS와 Docker를 사용하려고 계획 중입니다. Docker 컨테이너 이미지 저장소로 Docker Hub와 ECR 중 선택하는 과정에 있어서, 비용적인 측면과 AWS 기반 인프라적인 측면에서 Docker Hub 보다는 ECR이 좀 더 적합 다는 생각이 들었습니다. AWS 클라우드 비용을 SWM에서 지원해 준다. Docker Hub의 경우 Public Repository는 무료이지만, Private Repository는 유료 구독을 해야 한다. EC2, S3, RDS 등 AWS 서비스로 인프로를 구축할 예정으로, ECR 사용 시 나머지 AWS 서비스와 원활하고 강력한 통합을 예상한다. 이미지 액세스에 대해서 엄격한 IAM을 구성하여 보안 측면을 .. 2023. 7. 9.
[Test] 외부 API 테스트하기 (+ RestTemplateBuilder) SWM에서 프로젝트를 진행하는 과정에서 카카오 도서 검색 API를 사용하여 도서를 검색해 오는 기능을 구현하고, 테스트 코드를 작성하는 과정에서 아래와 같은 이슈가 나타났다. Unable to use auto-configured MockRestServiceServer since MockServerRestTemplateCustomizer has not been bound to a RestTemplate java.lang.IllegalStateException: Unable to use auto-configured MockRestServiceServer since MockServerRestTemplateCustomizer has not been bound to a RestTemplate at org.spri.. 2023. 7. 6.
[Spring] Spring Rest Docs로 API 문서 자동화하기 SWM에서 프로젝트를 진행하는 과정에서 API 문서 자동화를 위해 Spring Rest Docs를 적용하기로 했다. 이전에는 Swagger나 노션에 API 문서를 작성했지만, 아래와 같은 단점이 있었고 여러 단점을 해결하기 위해 Spring Rest Docs를 적용하기로 결정하였다. Swagger는 프로덕션 코드(컨트롤러 레이어, 요청/응답 객체)에 Swagger 애노테이션이 추가되어 가독성이 떨어졌다. 테스트 기반 아니기 때문에, API 문서대로 기능이 동작한다는 보장이 없었다. 노션에 API 문서를 작성 시, 새로운 코드를 개발하거나 기존 코드를 변경하였을 때 코드와 문서를 동기화하는 과정이 번거로웠다. 따라서 이번 포스트에서는 Spring Rest Docs를 적용하는 과정을 기록하고자 한다. 1) .. 2023. 7. 3.
[Pattern] 싱글톤 패턴 정리 목적 단 하나의 유일한 객체를 만들기 위한 디자인 패턴 클래스의 인스턴스를 오직 하나만 만들어서 글로벌하게 접근할 수 있도록 한다. 메모리 절약을 위해 인스턴스가 필요할 때 똑같은 인스턴스를 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법 대부분 리소스를 많이 차지하는 역할을 하는 무거운 클래스를 대상으로 한다. ex) 데이터베이스 연결 모듈, 디스크 연결, 네트워크 통신, DBCP 커넥션풀, 스레드풀, 캐시, 로그 기록 객체 자바로 싱글톤 패턴 구현 생성자를 private으로 설정해서 외부에서 인스턴스로 만들 수 없게 만드는 것이 중요하다. 1. Lazy initialization public class Singleton { private static Singleton instance; privat.. 2023. 6. 25.
[Spring Cloud] 마이크로서비스간 통신 (RestTemplate vs FeignClient) 마이크로서비스 간 통신모놀리식 애플리케이션은 단순하게 메서드를 호출함으로 써, 요청에 대해 응답을 처리할 수 있었다.하지만, 분산 시스템에서 각각의 독립적인 Micro Service가 서로 통신하는 작업이 필요하다.마이크로서비스 간 통신은 주로 HTTP기반 Restful API를 사용하여 이루어진다. RestTemplate vs FeignClientRestTemplateSpring Framework에서 제공하는 HTTP 클라이언트다른 서비스로의 HTTP 요청을 수행하고 응답을 받아올 수 있다. 장단점장점다양한 HTTP 메서드를 지원하고, 요청을 다양한 방식으로 커스터마이즈 할 수 있다.오랜 기간 동안 사용되어 왔기 때문에, 많은 개발자들에게 익숙하다.많은 커스터마이즈를 제공해 복잡한 통신 시나리오를 다룰.. 2023. 6. 22.
[Spring Cloud] Config Server 설정 정보의 암호화 처리 Spring Cloud Config 공식 문서에서 Features를 보면, Encrypt와 Decrypt를 지원한다.각 마이크로 서비스에서 중요한 설정 정보는 보안에 민감한 정보들이 많다.ex) 데이터베이스 암호, API 키, JWT의 Secret Key와 같은 사용자 인증 정보 등따라서 설정 정보에 보안에 민감한 정보를 저장할 때는 암호화를 하여 저장하는 것이 매우 중요하다.Spring Cloud Config의 Encrypt와 Decrypt를 사용하여 설정 정보를 안전하게 저장하는 방법에 대해서 알아보자.  대칭키 암호화(symmetric) & 비대칭키 암호화(asymmetric)대칭키 암호화암호화와 복호화에 동일한 키를 사용하는 방식주요 알고리즘으로는 DES(Data Encryption Standar.. 2023. 6. 20.