제시 제임스 개럿(Jesse James Garrett)의 저서 «사용자 경험의 요소»에선 웹개발에서 추상화의 단계를 다섯 면으로 나눈다. 전략(strategy) 범위(scope) 구조(structure) 뼈대(skeleton) 표면/비쥬얼(surface/visual) 우리가 전문가의 이미지를 잘못 가지고 있다면 전문가가 다음과...
[MSA] Transactional Outbox Pattern
출처 https://11st-tech.github.io/2022/05/16/junior-developer-first-msa-design-and-development/#api-%EB%A9%B1%EB%93%B1%EC%84%B1%EA%B3%BC-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%EC%88%9C%EC%84%9C-%EB%...
[MSA] Kafka Connect란
출처 https://cjw-awdsd.tistory.com/53 https://sihyung92.oopy.io/architecture/cdc https://hoing.io/archives/5285
[MSA] CircuitBreaker 개요 및 Resilence4J 를 활용한 실습
써킷 브레이커 패턴 써킷 브레이커는 누전 차단기라는 뜻을 가진다. 누전차단기는 전기 회로에서 과부하가 걸리거나 단락으로 인한 피해를 막기 위해 자동으로 회로를 정지시키는 장치이다. MSA 로 구성된 환경에서 여러 마이크로서비스들이 존재하고 내부 internal-api 로 통신을 하게 되어 서비스가 운영된다. 예를 들어, 아래 그림과 같이 Displ...
[이펙티브자바] 아이템89-인스턴스 수를 통제해야 한다면 readResolve 보다는 열거 타입을 사용하라
핵심 정리: 불변식을 지키기 위해 인스턴스를 통제해야 한다면 가능한 한 열거 타입을 사용하자. 여의치 않은 상황에서 직렬화와 인스턴스 통제가 모두 필요하다면 readResolve 메서드를 작성해 넣어야 하고, 그 클래스에서 모든 참조 타입 인스턴스 필드를 transient 로 선언해야 한다. 싱글턴 인스턴스의 직렬화 앞선 아이템 3에서...
[이펙티브자바] 아이템88-readObject 메서드는 방어적으로 작성하라
핵심 정리: readObject 메서드를 작성할 때는 언제나 public 생성자를 작성하는 자세로 임해야 한다. readObject는 어떤 바이트 스트림이 넘어오더라도 유효한 인스턴스를 만들어내야 한다. 바이트 스트림이 진짜 직렬화된 인스턴스라고 가정해선 안된다. 이번 아이템에서 기본 직렬화 형태를 사용한 클래스를 예로 들었지만, 커스텀 직렬화를...
[Architecture] 헥사고날아키텍처
Reference https://mesh.dev/20210910-dev-notes-007-hexagonal-architecture/ https://happy-coding-day.tistory.com/entry/%ED%97%A5%EC%82%AC%EA%B3%A0%EB%82%A0-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98He...
[이펙티브자바] 아이템83-지연 초기화는 신중히 사용하라
핵심 정리: 대부분의 필드는 지연시키지 말고 곧바로 초기화해야 한다. 성능 때문에 혹은 위험한 초기화 순환을 막기 위해 꼭 지연 초기화를 써야 한다면 올바른 지연 초기화 기법을 사용하자. 인스턴스 필드에는 이중검사 관용구를, 정적 필드에는 지연 초기화 홀더 클래스 관용구를 사용하자. 반복해 초기화해도 괜찮은 인스턴스 필드에는 단일검사 관용구도 고...
[이펙티브자바] 아이템80-스레드보다는 실행자, 태스크, 스트림을 애용하라
실행자 프레임워크(Executor Framework) 인터페이스 기반의 유연한 태스크 실행 기능을 담고 있음 아래 한 줄로 생성 가능하다. ExecutorService exec = Executors.newSinleThreadExecutor(); 실행할 테스크(task; 작업)을 넘기고자 한다면 아래와 같이 Runnable 을 구현...
[AWS] ECS
출처 https://julie-tech.tistory.com/4 https://great-park.tistory.com/15