출처 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%...
Kafka Connect란
출처 https://cjw-awdsd.tistory.com/53 https://sihyung92.oopy.io/architecture/cdc https://hoing.io/archives/5285
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 을 구현...
[Database] charset과 collation
MySQL 또는 MariaDB 를 사용하여 컬럼에 unqiue 제약 조건을 걸었더니 대소문자를 구별하지 않는 것을 새로 알게 되었고 그 이유에 대해서 알아보았다. 즉, AAA 와 aaa 와 동일하게 취급하여 유니크 제약 조건으로 인해 둘 중 하나의 insert가 안되는 것이다. unquie 제약 조건을 추가하는 DDL 명령어는 아래와 같다. AL...
[이펙티브자바] 아이템75-예외의 상세 메시지에 실패 관련 정보를 담으라
사후 분석을 위해 실패 순간의 상황을 정확히 포착해 예외의 상세 메시지에 담아야 한다. 예외를 잡지 못해 프로그램이 실패하면 자바 시스템은 그 예외의 stack trace 를 자동으로 출력한다. stack tract 는 예외 객체의 toString 메서드를 호출해 얻는 문자열로 보통은 예외 클래스 이름 뒤에 상세 메시지가 붙는 형태다. 이...