https://redis.io/docs/latest/develop/use/patterns/distributed-locks/많은 환경에서 다양한 프로세스에서 공유하는 자원을 상호 독점적으로 사용할 수 있게 해준다.효과적인 방법으로 분산락을 사용하기 위해서는 아래
디플로이먼트는 파드와 레플리카셋에 대한 선언적 업데이트를 제공디플로이먼트는 상태를 갖고 있고, 디플로이먼트 컨트롤러는 현재 상태에서 의도하는 상태로 비율을 조정하며 변경할 수 있다.새 레플리카셋을 생성하는 디플로이먼트를 정의하거나 기존 디플로이먼트를 제거하고, 모든 리
https://kubernetes.io/ko/docs/concepts/services-networking/ingress/클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이며, 일반적으로 HTTP를 관리함인그레스는 부하 분산, SSL 종료, 명칭
외부와 접하는 단일 엔드포인트 뒤에 있는 클러스터에서 실행되는 애플리케이션을 노출시키는 역할셀렉터를 이용하여 쿠버네티스 파드에 대한 접근을 추상화이 명세는 my-service라는 새로운 서비스 오브젝트를 생성하고, app.kubernetes.io/name=MyApp 레
Sharding 데이터를 여러 머신에 분산하는 방법 대규모 데이터 세트와 높은 처리량 작업의 배포를 지원 단일 지점 서버의 용량 한계의 문제점을 극복하기 위한 방법 쿼리 속도가 높으면 서버의 CPU 용량 고갈 문제 시스템의 RAM보다 작업 세트 크기가 크면 디스
https://dev.mysql.com/doc/refman/8.4/en/innodb-transaction-isolation-levels.htmlACID에서 I를 의미한다.(Isolation)여러 개의 트랜잭션이 동시에 발생하기 위해서 고려되는 성능과 신뢰성,
https://dev.mysql.com/doc/refman/8.4/en/innodb-consistent-read.html Consistent read InnoDB는 multi-versioning을 통해서, 데이터 베이스의 특정 시점의 쿼리를 표현한다. 트랜잭션
기능에 대해서 코드 테스트를 작성하는 것은 전체 서비스에 대한 품질을 높이고 미리 발생할 수 있는 이슈들을 확인할 수 있도록 도와줍니다. CI(Contiuous Integration) 서버를 통해서 전체 테스트를 통과하는지 확인할 수 있습니다. 만약, 일부 테스트가 실
컨테이너나 가상 머신과 같은 인스턴스를 새롭게 생성할 때, 그 인스턴스를 어느 서버에 생성할 것인지 결정하는 일을 뜻함컨테이너를 생성하기 전에 특정 목적에 최대한 부합하는 워커 노드를 선택하는 작업이 스케줄링에 해당ectd는 분산 코디네이터라고 불리는 도구의 일종으로,
@Transactional에서 POST, PUT, DELETE와 같이 시스템에 변경을 가하는 외부 API를 호출함앱과 연결된 데이터베이스는 트랜잭션 롤백이 반영되지만, 외부 API 처리를 롤백해주기 위해서는 별도의 방안이 필요함POST, PUT, DELETE에 대해서
현재 진행 중인 프로젝트를 위한 것이 아닌 응집력 있는 하위 도메인을 식별해야 한다. 이러한 하위 도메인에서 일반화된 모델 요소를 추출해서 별도 MODULE에 배치할 수 있다.하위 도메인으로 분리되고 나면 해당 하위 도메인의 계속되는 개발에 대해서는 CORE DOMAI
CORE DOMAIN을 찾아 그것을 지원하는 다수의 모델과 코드로부터 쉽게 구별할 수 있는 수단을 제공해야 한다.CORE DOMAIN에 가장 재능 있는 인력을 할당하고 그에 따라 인력을 채용해야 한다.시스템의 비전을 수행하기에 충분한 심층 모델을 찾고 유연한 설계를 개
두 개발 팀이 상류/하류 관계를 맺고 있고 상류 팀이 하류 팀의 필요성을 충족시킬 충분한 동기를 느낄 수 없다면 팀은 속수무책으로 무력해질 수밖에 없다.이타주의를 발판 삼아 상류 개발자들이 약속을 할 수는 있어도 그 약속을 이행할 가능성은 희박하다.상류 팀의 선한 의도
기존 도메인 모델로 직접 번역하거나 기존 모델에서 직접 번역해 오는 것은 좋은 해결책이 아닐지도 모른다.그러한 모델은 지나치게 복잡하거나 아니면 제대로 도출된 것이 아닐 수도 있으며, 아마 문서화돼 있지 않을 것이다.한 모델을 데이터 교환 언어로 사용한다면 해당 모델은
어떤 하위 시스템을 다른 여러 하위 시스템과 통합해야 할 경우 각 하위 시스템에 대한 번역기를 조정한다면 팀 전체가 교착 상태에 빠질 수 있다.변경이 발생할 때는 유지보수하고 걱정해야 할 일이 더욱 많은 법이다.하위 시스템에 일관성이 있다면 그와 같은 일관성을 다른 하
JPA의 Entity에서 발생하는 변화들을 인지하기 위한 역할로서 사용되는 클래스Entity와 관련된 트랜잭션(라이프사이클)에 관여하여 감사(Audit)하기 위한 용도로 사용될 수 있음@PostPersist, @PostRemove, @PostUpdate의 형태로 사용할
클라이언트 고유의 도메인 모델 측면에서 기능을 제공할 수 있는 격리 계층을 만들어야 한다.격리 계층은 기존에 이미 존재하는 인터페이스를 거쳐 다른 시스템과 통신하므로 다른 시스템을 거의 수정하지 않아도 된다.해당 계층에서는 내부적으로 필요에 따라 두 모델을 상대로 양방
필요성 밀접하게 연관된 애플리케이션을 대사응로 작업 중인 팀 간의 협력이 조율되지 않는다면 잠시 동안은 작업을 진행할 수 있겠지만 각 팀이 만들어낸 결과물을 함께 조합하기는 쉽지 않을 것이다. 결국 처음부터 CONTINUOUS INTEGRATION을 적용했을 때보다 더 많은 시간을 번역 계층을 개발하고 구조를 개선하는 데 허비하게 될 것이며, 동시에 공...
CONTEXT MAP 작성 기준 의사 소통을 위해 컨텍스트 간의 번역에 대한 윤곽을 명확하게 표현하고 컨텍스트 간에 공유해야 하는 정보를 강조함으로써 모델과 모델이 만나는 경계 지점을 서술해야 한다. 각 컨텍스트의 현재 영역을 나타내는 지도를 작성해야 한다. 서로
단일 모델 대규모 시스템의 도메인 모델을 완전하게 단일화한다는 것은 타당하지 않거나 비용 대비 효과적이지 않을 것이다. 한 번에 지나치게 많은 레거시를 교체하려 할지도 모른다. 대규모 프로젝트에서는 능력에 비해 조율에 드는 비용이 너무 커서 난관에 처할지도 모른다