본문 바로가기

전체 글361

[Spring 7편] Spring IOC, DI, PSA 목차는 spring series 목차 에 있습니다. [spring 7편] spring ioc, di, psa 정리 1. IOC 1.1 배경 자바 플랫폼이 어플리케이션 개발에 관련된 풍부한 기능을 제공하더라도 기본적으로 이러한 기능들을 하나의 큰 구조로 만드는 기능은 부족하다. 스프링 프레임워크 제어의 역전 (IoC) 컴포넌트는 이러한 관심사에 접근한다. 즉, 서로 다른 기능들을 하나의 커다란 프레임워크로서 관리하는 것에 초점을 두고 있다. 1.2 개념 인스턴스 생성의 제어를 개발자 본인이 아닌 다른 누군가 처리. 즉 IOC 란 인스턴스의 생성부터 소멸까지 개발자가 아닌 컨테이너가 대신 관리해준 다는 것이다. POJO (bean) 을 관리 POJO 란 컴포넌트 등의 의존성이 없는 자바 오브젝트 객체를 말한.. 2022. 6. 14.
[spring 2편] spring boot okhttp 활용 source 는 Github 에 있습니다. 목차는 spring series 목차 에 있습니다. okhttp 란 무엇인가? http 통신을 편리하게 사용할 수 있도록 도와주는 라이브러리입니다. build.gradle gson 은 json 을 변환해주는 라이브러리인데, okhttp 와 조합해서 사용하면 편리합니다. (json + http 와 같은 통신 방법) // okhttp implementation("com.squareup.okhttp3:okhttp:4.9.1") // GSON implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.5' okhttp example source public class OkhttpUtils { /*.. 2022. 6. 13.
[spring 1편] mapstruct 활용 source 는 Github 에 있습니다. 목차는 spring series 목차 에 있습니다. [spring 1편] mapstruct 활용 mapstruct 무엇인가? mapstruct 은 객체 맵핑을 도와주는 라이브러리입니다. 예를 들면, dto dto 간 코드 맵핑을 도와주는 것입니다. source 단건을 mapping 하는 예제와 list 를 맵핑하는 예제로 테스트 작성했습니다. 결론 mapstruct 사용하면 dto 간 데이터 전송을 쉽게 할 수 있으며, 코드도 간결해집니다. Reference https://www.baeldung.com/mapstruct 2022. 6. 13.
[Redis 6편] Redis 성능 목차는 redis 목차 에 있습니다. source 는 Github 에 있습니다. [Redis 6편] Redis 성능 Cache Stampede Cache Stampede 란 캐시가 만료될 때, 대용량 트래픽의 경우 캐시 miss 가 여러번 발생할 수 있습니다. 여러 요청에 대해 cache miss 가 발생하면 각 request 는 DB 를 조회해서 데이터를 읽어와 캐시에 여러 번 쓰게 될 것 입니다. cache miss 와 cache write 가 여러번 발생해서 성능에 영향을 주는 것이 Cache Stampede 입니다. Cache Stampede 해결방안 이런 현상을 해결하기 위해 PER(Probablistic Early Recomputation) 알고리즘을 도입합니다. PER 이란 TTL (만료시간.. 2022. 6. 11.
[MSA 2편] 보상 트랜잭션 (SAGA 패턴) 목차는 MSA 에 있습니다. [MSA 2편] 보상 트랜잭션 (SAGA 패턴) MSA 보상 트랜잭션이란? commit 한 데이터나 이미 반영한 데이터를 보정하는 트랜잭션입니다. 어떤 상황에 사용하는게 좋은가? 분산 환경에서 여러 api 끼리 통신을 하면 서로 다른 DB 에 일관성있게 데이터를 변경해야하는 경우가 생깁니다. 한 번에 성공하면 문제가 없겠지만 일부라도 실패하면 rollback 을 해야하는 경우가 생깁니다. 이런 경우에 사용합니다. SAGA 분산 트랜잭션 환경에서 보상 이벤트를 발생시킴으로써 원자성을 보장하는 패턴입니다. SAGA 패턴 방식 1 발생한 서비스에 대해 롤백을 할 수 있는 서비스를 실행시키는 것입니다. 외부 연동의 서비스의 경우 이런 방법을 택해야할 수 있습니다. 예를 들면, 비행기.. 2022. 6. 11.
[MSA 1편] MSA 기본 개념 정리 목차는 MSA 에 있습니다. MSA(Microservice Architecture) 도메인을 중심으로 서비스를 모델링하고 구현하는 아키텍처 입니다. 도메인 별로 서비스, DB 등이 물리적, 논리적으로 분리돼있으며, 이렇게 분리된 도메인 서비스들은 HTTP API 또는 비동기 메시징 방식으로 통신합니다. 하나로 묶은 애플리케이션을 여러 어플리케이션 (보통 도메인) 으로 나누어서 각 서버에 배포해서 서로 간에 통신을 통해 서비스를 제공하는 방식입니다. 예를 들면, 상품도메인은 상품 로직 + 상품 DB 로 묶어서 특정 서버에 배포. 주문 도메인은 주문 로직 + 주문 DB 로 묶어서 특정 서버에 배포합니다. 이렇게 따로 배포해서 서로의 데이터가 필요할 땐 보통 API 를 통해서 접근합니다. 장점은 서버 확장성이.. 2022. 6. 11.