목차 1. 메시징 2. 이벤트기반 아키텍처 서비스에 적용 가능한 IPC(Inter-Process Communication) 기술은 HTTP 기반 REST나 gRPC 등 동기 요청/응답 기반의 통신 매커니즘도 있고, AMQP, STOMP 등 비동기 메시지 기반의 통신 메커니즘도 있다. IPC의 선택은 시스템 가용성에 영향을 미치는데, 요청을 처리하는 과정에서 타 서비스와 동기 통신을 하면 그만큼 가용성이 떨어지므로 가능한 서비스가 비동기 메시징을 이용하여 통신하도록 설계하는 것이 좋다. 1. 메시징 메시징은 서비스가 메시지를 서로 비동기적으로 주고받는 통신 방식이다. 메시지 메시지는 헤더와 바디로 구성되고 종류는 다음과 같다. 문서(document) : 데이터만 포함된 제네릭한 메시지, 메시지 해석은 수신..
목차 1. 트랜잭셔널 메시징 2. Amazon SQS 3. SQSListener Github OAuth2 인증을 통해 테이블에 Account 계정을 생성하고 Github 계정 정보가 변경된 경우 Member 마이크로 서비스의 Account 레플리카를 업데이트 하는 기능을 개발한다. 트랜잭셔널 아웃박스 패턴과 폴링 발행기 패턴을 활용해 DB 업데이트와 메시지 발행에서 마이크로 서비스간의 데이터 일관성이 깨지는 문제를 해결한다. DB 업데이트와 메시지 전송을 한 트랜잭션으로 묶지 않으면 마이크로 서비스간 데이터 일관성이 깨지는 문제가 발생할 수 있다. 예를 들어, DB 업데이트 후 메시지를 발행했지만 트랜잭션을 커밋하기 전에 서비스에 문제가 생겨 서버가 종료되는 경우 메시지는 전송되었지만 DB에는 반영되지 ..
목차 1. 자바 예외 2. 자바 예외 활용 3. 예외 포함과 스택 트레이스 4. 예외 추상화 5. JDBC 반복 문제 해결 - JdbcTemplate 6. 서블릿 예외처리 7. 스프링 부트 오류 페이지 8. API 예외처리 목표 자바의 체크 예외와 언체크(런타임) 예외의 활용법을 이해하고 스프링에서 제공하는 예외 추상화를 통해 특정 기술에 의존하지 않고 순수한 서비스 계층을 유지하는 방법에 대해 알아본다. 서블릿의 예외처리 과정을 이해하고 스프링에서 예외를 공통으로 처리하는 방법에 대해 알아본다. 1. 자바 예외 1) 예외 계층 (1) Throwable 최상위 예외이다. 하위에 Exception 과 Error 가 있다. (2) Error 메모리 부족이나 심각한 시스템 오류와 같이 애플리케이션에서 복구 불..
목차 1. 트랜잭션 2. DB 락 3. 애플리케이션 트랜잭션 적용 4. 스프링 트랜잭션 목표 데이터베이스의 트랜잭션에 대해 알아보고 스프링이 트랜잭션을 지원하기 위해 제공하는 트랜잭션 매니저와 트랜잭션 동기화 매니저에 대해 알아본다. 1. 트랜잭션 데이터를 단순히 파일에 저장하는 것이 아닌 데이터베이스에 저장하는 이유는 데이터베이스가 트랜잭션이라는 개념을 지원하기 때문이다. 트랜잭션 ACID 트랜잭션은 다음의 ACID를 보장해야 한다. 원자성(Atomicity): 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공 하거나 모두 실패해야 한다. 일관성(Consistency): 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 데이터베이스에서 정한 무결성 제약 조건..
- Total
- Today
- Yesterday
- JPA
- 육각형 아키텍처
- 마이크로서비스 패턴
- 스프링 예외 추상화
- kafka
- 트랜잭셔널 아웃박스 패턴
- 학습 테스트
- http
- named query
- MySQL
- ATDD
- 클린코드
- 폴링 발행기 패턴
- 이벤트 스토밍
- TDD
- 계층형 아키텍처
- spring rest docs
- Spring
- 스프링 카프카 컨슈머
- clean code
- Spring Data JPA
- 도메인 모델링
- Spring Boot
- HTTP 헤더
- mockito
- java8
- H2
- Ubiquitous Language
- Stream
- Git
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |