본문 바로가기

IT 초보코딩의 세계/취미 코딩16

[Micro Service] Micro Service 설계 1장 ◆ Micro Service 설계 ▶ 소프트웨어 개발의 역사에서 모듈화의 중요성은 예전이나 지금이나 한결같은데 모듈화의 근본적 가치는 각 모듈을 기능적으로 응집성 높게 만들고(high cohesion) 기능이 다른 타 모듈 간의 의존도를 낮추는 것(low coupling) ▶ 마이크로서비스 설계에서의 가장 중요한 관심사도 어떻게 기능적으로 응집성있는 마이크로서비스를 도출하고 타 서비스 간의 의존도는 낮출 것인가 하는 것이고 마이크로서비스의 내부 구조를 구성하는 각 요소들도 역할별로 모듈화 돼야 하는데 역할 별로 모듈화 된다는 말은 각 역할이 분명한 응집성 있고 서로 의존성이 낮은 모듈들이 모여 마이크로서비스를 이루고 이 마이크로서비스는 다른 마이크로서비스와 의존성이 낮아야 한다는 의미 ▶ 다른 방식으로 .. 2023. 4. 26.
[MicroService] Micro Service Application Architecture(아키텍처 정의, Micro Service 도출, MDD, DDD, 빌드 및 배포) 3장 ◆ 기민한 설계 / 개발 프로세스 ▶ 아키텍처 정의와 Micro Service 도출 ● 아키텍처 정의 ⊙ Micro Service 외부/내부 아키텍처를 정의하는 공정 ⊙ 로버트 c. 마틴은 기술 세부사항은 늦게 결정할 수 있어야 한다고 언급한 바 있는데 이것은 기존의 워터폴한 개발 프로세스에서 강조했던 아키텍처 등의 기술 결정사항이 모두 완벽하게 정의된 후 개발을 해야 한다는 말과 배치됨 ⊙ Micro Service를 순수 비즈니스 로직이 존재하는 내부 영역과 기술 영역을 표현하는 외부 영역으로 구분해서 개발하면 외부 영역은 언제든지 교체될 수 있으므로 애플리케이션의 핵심인 내부 영역에 집중하고 외부 영역 즉 아키텍처의 결정사항들은 천천히 결정해도 된다는 의미로 그만큼 애플리케이션은 소프트 즉 유연해야 .. 2023. 4. 26.
[MicroService] Micro Service Application Architecture(저장소 처리 어댑터, 도메인 이벤트 발행 어댑터, 도메인 이벤트 핸들러, Agile Process ) 2장 ◆ Micro Service의 내부 구조 정의 ▶ 외부 영역 – 세부 사항 ● 외부 영역은 내부 영역의 서비스 인터페이스를 사용하는 인바운드 어댑터와 내부 영역에서 선언한 아웃바운드 인터페이스를 구현하는 다양한 어댑터로 구성 ● 어댑터는 플러그인처럼 언제든지 교체되거나 확장될 수 있어야 하기 때문에 내부 영역이 먼저 정의된 후에 외부 영역의 세부사항은 늦게 정의돼도 상관없도록 해야 하는데 이 같은 방식이 소프트웨어를 부드럽게(Soft) 만듬 ● 어댑터 ● API 퍼블리싱 어댑터 ◎ API 퍼블리싱 어댑터는 REST API를 발행하는 인바운드 어댑터 ◎ 내부 영역의 서비스 인터페이스를 호출해서 REST 형식의 API로 제공 ◎ 명시적인 REST 리소스 명칭을 정의하고 각 REST 메서드가 의도에 맞게 서비.. 2023. 4. 24.
[MicroService] Micro Service Application Architecture(내부 아키텍쳐, 애그리거트 패턴, 도메인 모델 패턴, 트랜잭션 스크립트 패턴 ) 1장 ◆ Micro Service의 내부 구조 정의 ▶ 바람직한 Micro Service의 내부 아키텍처: 클린 Micro Service ● 지금까지 언급한 아키텍처 구조는 점점 복잡해지는 모노리스 소프트웨어를 통제하기 위해 오랫동안 고민해온 결과로 그에 비해 Micro Service는 복잡해진 모노리스의 각 기능들을 쪼개기 때문에 어느 정도 복잡성을 덜어낼 수 있지만 분리해도 복잡성은 이전되고 그 안의 복잡성을 통제할 필요가 있다는 사실은 변하지 않음 ● Micro Service의 내부 구조를 정의할 때 반드시 고려해야 할 한 가지는 Micro Service 시스템에서 정의해야 할 마이크로서 비스의 내부 구조가 다양할 수 있다는 것인데 왜냐하면 Micro Service는 앞에서 살펴본 것처럼 자율적인 Mic.. 2023. 4. 24.