MSA6 마이크로서비스 아키텍처 구축 CH.5 마이크로서비스의 통신 구현 5.1 이상적인 기술을 찾아서 여러 서비스가 얽힌 만큼 하위 호환성을 쉽게 해야 함. 명시적인 인터페이스를 사용해야 명시적 스키마를 사용하면, 노출하는 인터페이스가 명시적임을 보장한다. 가능성을 열어 두되, API를 기술 중립적으로 유지하자 “마이크로서비스를 구현하는 데 사용될 기술스택을 강요하는 통합기술은 피해야 한다” ⇒ 이해가 안됨. 내부 구현 및 세부 사항을 은닉하라 내부 구현 사항을 알게 되면 결합도가 증가함 내부 구현 사항 변경 시, 소비자도 변경을 해야하게 됨. → 기술 부채 증가 5.2 기술 선택 RPC (Remote Procedure Call) 원격 서비스를 로컬에서 호출한다. 같은 네트워크 상에서만 가능 클라이어느 측 코드를 쉽게 생성 가능하므로, 메서드 호출하듯이 사용 가능한 것이 가.. 2023. 12. 16. 마이크로서비스 아키텍처 구축 CH.4 마이크로서비스 통신 방식 4.1.1 성능 프로세스 내 호출 기본 컴파일러와 런타임은 호출에 있어서 전체 호스트 최적화를 수행 가능 프로세스 간 호출 패킷을 전송하기 때문에 최적화가 불가 프로세스 내 호출에 비해 오버헤드가 클 것으로 예상되지만, 확실히 측정 가능 데이터 센터 안에서 단일 패킷 왕복 시간 측정 API 호출은 다시 API 설계는 신중해야 한다. 프로세스 내부 호출 이를 테면, 매개변수 전달 시 포인터를 전달 전달 시 데이터를 복사하려고 더 많은 메모리 할당이 필요 없음 프로세스 간 호출 (네트워크) 데이터 전송을 위해 특정 형태로 직렬화 및 역직렬화 수행 페이로드 크기에 대해 주의해야 데이터 송수신양을 최대한 줄이기 파일 시스템으로 내려 파일 위치에 대한 참조 대신 전달 추상화, But 내부 사정을 충분히 고려하자 .. 2023. 11. 4. [감상문] <도메인 주도 설계로 시작하는 마이크로 서비스 개발> 을 읽고 도메인 주도 설계 철저 입문과 같이 구매한 책이다. DDD 와 MSA 라니 제목이 매우 흥미로웠고, 분산 환경에서 정석적인 아키텍처 설계 및 코드 작성법을 배우고 싶었기 때문에 읽게 되었다. 첫 장은 아마존의 비즈니스 민첩성의 비밀 내용을 설명하며 아마존 만의 빠른 배포 속도의 노하우와, 현재 가장 대중화된 인프라인 클라우드 서비스 내에서 어울리는 애플리케이션의 조건을 설명한다. 그리고 자연스럽게 마이크로 서비스의 소개로 이어진다. 마이크로 서비스 아키텍처는 기존 모노리스 아키텍처와 다르게 설계에 각별히 신경을 써야 한다. 상대적으로 유지보수를 더 쉽게 할 수 있는 구조이지만, 데이터 정합성 문제가 가장 큰 이슈이기 때문이다. 그를 보완하기 위한 수많은 패턴들을 소개했다. 애플리케이션 레벨에서도 정합성을.. 2022. 12. 9. OutBox Pattern & Saga Pattern & Transaction 지난번 포스팅을 이후로 3일간 테스트 코드에 관한 공부를 하며 리팩터링을 진행했다. 데이터 분산 환경에서의 트랜잭션의 고려도 충분히 중요한 설계 같다. 그 리팩터링 과정을 정리해보겠다. https://sweeeetgoguma.tistory.com/entry/%E3%80%8COutBox-Pattern%E3%80%8D-%ED%99%9C%EC%9A%A9 「OutBox Pattern」 활용 https://github.com/GroovyArea/MyChickenBreastShop/wiki/Version-1 GitHub - GroovyArea/MyChickenBreastShop: ChikenBreastShop API with Spring boot ChikenBreastShop API with Spring boot... 2022. 6. 13. 「OutBox Pattern」 활용 https://github.com/GroovyArea/MyChickenBreastShop/wiki/Version-1 GitHub - GroovyArea/MyChickenBreastShop: ChikenBreastShop API with Spring boot ChikenBreastShop API with Spring boot. Contribute to GroovyArea/MyChickenBreastShop development by creating an account on GitHub. github.com 프로젝트 초기 작성한 Wiki 문서에서 계획한 기능은 다 구현이 되었다. 게시판, 배송, 채팅 기능 같은 경우는 부수적이므로 다양한 기능을 얕게 구현하는 것보다 기능 하나를 구체적으로 고려하며 구현하는 .. 2022. 6. 10. 데이터 분산 처리 [Micro Service Architecture] 프로젝트를 진행 중이다. 프로젝트의 규모가 커질 수록 계층 간 DTO 객체를 이용하는 일이 많아졌다. 불변 객체를 적절히 설계해야 할 필요를 느끼며 최대한 클래스 설계를 잘했다. 리뷰를 받던 중 MAS 아키텍쳐에 대해 알게 되었다. 데이터 정합성 관련 문제가 생길 수 있지만 한번 개념에 대해 정리해보고 수정을 해볼 생각이다. 보편적인 아키텍처 모놀리식 아키텍쳐 (Monolithic Architecture) 우리가 많이 보아온 형태이다! 소프트웨어의 모든 구성 요소가 하나로 통합되어 있는 형태 주로 소규모 프로젝트에서 사용한다. 규모가 커질 경우 한계가 드러남 장점 단순한 아키텍처로 개발이 쉽다 복잡하지 않고, 배포가 간단하다 확장성이 쉽다 고가용성 서버를 쉽게 구현할 수 있다 단점 Scale out이 어.. 2022. 5. 27. 이전 1 다음 반응형