일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- saga pattern
- Spring Boot Actuator
- 체인 패턴
- 알고리즘
- 디자인 패턴
- TypeScript
- spring cloud
- 키클락
- 생산자 소비자 패턴
- MSA
- zipkin
- 타입스크립트
- Action Pattern
- 디자인패턴
- 멀티스레드
- 사가 패턴
- The law of Demeter
- Spring Cloud Netfilx Eureka
- Serial GC
- Java
- Resilinece4j
- 스프링 배치
- JPA
- 배치
- spring batch
- Parallel Old GC
- Transaction Pattern
- thread
- java 정렬
- 스레드
- Today
- Total
목록Backend (77)
PSD( Private-Self-Development )
사용 배경신규 프로젝트를 진행하며,Auth 서비스를 일일히 구현하는 대신, 오픈 소스 Auth 서비스를 사용해보았다. 키클락 이란?인증 및 세션, 엑세스, 권한 관리를 해주는 ( IAM, SSO )오픈 소스 라이브러리 서버Red Hat 에서 주도 개발 키클락의 장점OAuth2.0 지원다양한 언어 지원( java, python, js, 안드로이드 등 )외부 사용자 저장소 지원 ( AD, LDAP 등 )토큰 기반 보안개발자 가 구현하는 것 보다 검증된 보안 서비스인 키를록을 사용하는것이 좀더 간단하게 보안성을 향상 시킬 수 있는 방법이다.확장성도 가지고 있다. (서버 하나 더 띄우는듯? 세션은 어캐??) 구현사용 스택java 21 + Spring boot 3.2.5 + securityAWS EC2( 우분투..
사용한 이유msa 와 DDD, 헥사고날 아키택처를 적용하다 보니 하나의 프로젝트에 여러 레이어가 존재하고 이게 불필요하게 붙어있다고 생각하여 큰 프로젝트 내부에 여러 프로젝트로 나누어 이들간의 의존성 주입으로 서로를 참조하도록 수정 최상단 프로젝트의 xml shared domain application infrastructure presentation container 21 3.3.5 .. com.test shared ${project.version} ... local true test/test-api:${project.version} AWS ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.a..
Blocking Queue로 멀티스레드 로직을 구현하며,몬가.... 기능이 뭉쳐져 로직이 지저분 해진다고 느껴서 찾아보니 역시나.... 적용 가능한 디자인 패턴이 있어서 공부해 보았다.생산자 소비자 패턴?멀티스레드 환경에서 공유 작업 목록을 가운데에 두고, 생산자(producer) 와 소비자(consumer) 로 나누어 구축하는 디자인 패턴이다. 생산자 소피자 패턴의 구조생산자(producer)블록킹 큐에 작업을 등록 하는 역할 주로 디스크 i/o, 네트워크 작업을 한다. 공유 자원(Buffer 또는 Queue) ex) Blocking Queue작업 목록멀티 스레드 환경이기 때문에 Blocking Queue 를 사용한다.소비자(consumer)블록킹 큐에 등록된 작업을 가져와서 처리하는 역할주로 CPU..
멀티 스레드를 구현하는 도중,BlockingQueue 에 관하여 알게되어 더 깊게 공부해 보았다. BlockingQueue?기존의 Queue 를 멀티스레드 환경에서 사용하기에는여러 위험성이 존재한다.멀티스레드 환경에서 여러 Thread 가 특정 공유 Queue에 put 하는 경우 메모리가 부족해진다.멀티스레드 환경에서 여러 Thread 가 특정 공유 Queue에 get 하는 경우 thread-safe 하지 않다.이러한 단점을 개선하기 위하여 나온것이 BlockingQueue이다.java.util.concurrent 패키지에 존재 하며, 구현체가 아닌 interface 이다. BlockingQueue 의 특징get 과 put 이 thread-safe 특정한 크기를 가지고 이 이상의 데이터가 put 요청 ..
개발 아키택처의 방향성의존성 문제 해결비즈니스 로직 과 인프라 로직을 분리 하여, 비즈니스 로직에만 집중하고자 한다.이전에는 하나의 뭉텅이로 만들어 놓던 이전의 로직을 각각의 역할 및 레이어로 분리하여, 유지 보수성 향상을 얻는다.이러한 방향성을 실현하기 위한 것이클린 아케텍처 이고, 이러한 클린 아케텍처를좀더 구현성을 강화 한 것이 헥사고날 아키텍처 이다. 클린 아키텍처?추상화된 레이어를 통해 의존성을 역전 시켜 인프라를 수정해도 비즈니스 로직은 수정하지 않아도 되도록 구현하는 아키텍처유즈케이스 추상화 레이어를 통해 전체적인 흐름을 제어의존성은 외부 -> 내부 로만 존재Entities (엔터프라이즈 비즈니스) Use Cases(어플리케이션 비즈니스) Interface Adapters Frameworks..
기존 서비스(모놀리식)를 MSA 로 변경하며, 테이블간의 복잡한 Join으로 작성되어 있던 조회 쿼리를 어떻게 변경해야 하나 고민해보았다. A. MQ를 이용하여 Join에 필요한 데이터를 동기화가장 처음으로 생각하던 방법이다.해당 방식은 기존에 사용하던 쿼리를 수정하지 않아도 되는 장점이 있었으나 많은 문제를 가지고 있다.단, 복사를 한다고 해도 해당 MS 필요한 데이터만 동기화 해야 한다. 장점쿼리 수정 불필요단점MSA 의 근본적 목표에 반하는 방법이다.(MS 간 결합도 상승으로 독립점 운영이 어렵다)동기화 빈도 상승 및 전송 효율 저하불필요한 데이터 변경이 발생 B. 해당 도메인 MS에 데이터를 요청하여 조회 후 조립 처음에는 하나의 쿼리로 작성하던 것을 Application 로직으로 대체하는 것에..
수업을 다 듣고 나서MSA 간 데이터 동기화 프로레스 중 에러가 발생한 경우 (트랜젝션 처리가 필요) 의 처리에 대해 궁금하여 공부해 보았다. 사가 패턴??MSA 서비스 간, 이벤트를 주고 받아 특정 MS에서 작업이 실패하면이전 MS들에게 보상 트랜젝션을 발생 시켜 롤백 처리를 진행하여 원자성을 보장하는 것이전에 DB에서 트랜젝션을 관리하는것과는 달리, application 에서 관리한다. 사가 패턴의 종류 Choreography based SAGA pattern각자의 MSA 들이 각자의 보상 트랜젝션을 가지고실패한 경우, 이전 MS 에 보상 트랜젝션을 발생 시키고,이전 MS 에서는 그 이전 MS 의 보상 트랜젝션을 발생 시키는 것 EX)A -> B -> C 순차적 진행중 C 에서 문제 발생 시,C ->..
Docker ?컨테이너 가상화 서비스컨테이너 가상화를 실행하고 이를 제어하는 어플리케이션 OS 가상화Host OS 위에 Guest OS 전체를 가상화자유도가 높으나, 시스템 부하가 많고 느림컨테이너 가상화Host OS 의 리소스를 적게 사용하며, 필요한 프로세스 만 실행최소한의 라이브러리와 도구만 사용한다.가볍고 빠르다 Container ImageContainer 실행에 필요한 설정 값Image 를 가지고 실체화 한 것이 Container Docker 안에 Local 이라는 저장소에 이미지들을 보관하고 이를 필요할 때 실행 구현하여 Container 를 운영한다. Dockerfiledocker image 를 생성하기 위한 스크립트 파일자체 DSL(Domain-Specific Language) 문법 사용F..