본문 바로가기

ApplicationArchitecture (AA)

(5)
Hexagonal Architecture와 Domain Driven Development 개념 및 구현 방법 정리 일단 정리하기에 앞서, SpringBoot, Java 17, Mybatis, Postgresql 정도로 프레임워크를 만들었다. 프런트는 화면에서 뿌려주는 데이터만 표시하고 링크 정도로만 구현할 거라 html로 정했다. 파일 구조는 아래와 같다.src ├── main │ ├── java │ │ └── com │ │ └── example │ │ ├── api # API Layer (REST Controllers) │ │ │ └── EntityController.java │ │ ├── application # Application Layer (Service Interfaces and Implementations) │ │ │ ├── EntityService.java │ │ │ └── EntityServiceIm..
Event-Driven-Architecture # Event-Driven-Architecture, 이벤트 기반 아키텍처- 이벤트 기반 아키텍처를 만들어봤다.음... 옵저버도 이벤트 기반이고, 이벤트 소싱 패턴도 이벤트 기반, 테스트 구현을 해보니 실제로 이벤트 기반 패턴과 EDA와는 큰 차이가 없는거 같다. 규모의 차이라면 아키텍처가 더 큰 의미를 가지니까? 음 어쨌든 동기, 비동식으로 이벤트를 실행 및 전달하는 관점에서는 비슷한것 같은 느낌? 코린이 입장에선 옵저버로 카프카 서비스로 payload를 넘기든지 아니면 EDA로 payload를 넘기든지 뭐 어디로 가든 서울로만 도착하면 된다는 느낌?- 진짜 구현하기 나름인것 같다. mvc 패턴으로도 동기, 비동기로 Kafka로 payload를 넘길수는 있으니까...!1. 아래는 EDA를 샘플코드로 구현..
ApplicationArchitecture 그려보기 # ApplicationArchitecture 그려보기 1. 지금까지...? - 헥사고날 아키텍처라고 인터넷 보고 구성한게 있는데 이게 산으로 가는건지 맞게 구성한건지 모르겠지만 일단 헥사고날이라고 이름을 붙였다. (디자인 패턴에 대해서 공부를 많이 해야겠다...!) 특이점은, 아파치 카프카를 붙여서, 퍼블리싱과 컨슈밍 하도록 구성을 하였고, 컨슈밍 할때 h2 db에 자동으로 message 컬럼에 insert되도록 구성을 했다. 그리고 ... 모든 컨슈밍 데이터들은 kafka_message.txt라는 파일에 저장되도록 구성을 하였다. 그리고 잡다한 기능이 몇개 더 있는데 설명은 나중에 하겠다. - 거의 매일 1주일간 새벽 2시까지 밤잠 안자며 만든 결과물 이긴 한데, 얼마나 더 확장될지 모르겠다. 일단 ..
(2) Hexagonal Architecture - 구현 # Hexagonal Architecture을 구현해보자. 나는 개발자가 아니다. 흔히 이야기하는 TA (Technical Achitect) 업무를 하고 있다. 근데 클라우드 환경으로 전환이 되면서, 개발 코드와 애플리케이션 아키텍처를 모르고 인프라 아키텍처를 온전히 구현 할 수가 없다. 물론 개발자 처럼 알아야 하는건 아니지만, 코드를 가지고 개발자와 이야기를 할 정도가 되어야 한다. 그래서 Application단의 아키텍처 또한 알아 두어야 한다. MVC패턴부터 시작해서 LayerdArchitecture, HexagonalArchitecture등 애플리케이션을 구현하기 위한 애플리케이션 단의 아키텍처도 하나하니씩 정리해보자. Hexagonal 아키텍처를 내 마음대로 인터넷을 보고 구현을 해보았다. 정..
(1) Hexagonal Architecture - 설계 # Hexagonal Architecture (또는 Ports and Adapters Architecture) 패턴 Hexagonal architecture 패키지의 샘플 코드에 대해서 알아보자. 예전부터 정리를 하자하자하자 했었는데 시간이 없어서 못했었다. 오늘 시간이 조금 생긴 관계로 샘플 코드를 만들고 정리를 해보면 아래와 같다. 일단 빈이란? 아래글을 참고. 빈(Bean)은 스프링 컨테이너에 의해 관리되는 재사용 가능한 소프트웨어 컴포넌트이다. 즉, 스프링 컨테이너가 관리하는 자바 객체를 뜻하며, 하나 이상의 빈(Bean)을 관리한다. 빈은 인스턴스화된 객체를 의미하며, 스프링 컨테이너에 등록된 객체를 스프링 빈이라고 한다. 그리고 인스턴스 란? 인스턴스는 주로 아래처럼 된것을 인스턴스 라고 한다..