본문 바로가기

ApplicationArchitecture (AA)

(2) Hexagonal Architecture - 구현

# Hexagonal Architecture을 구현해보자.

나는 개발자가 아니다. 흔히 이야기하는 TA (Technical Achitect) 업무를 하고 있다.

근데 클라우드 환경으로 전환이 되면서, 개발 코드와 애플리케이션 아키텍처를 모르고 인프라 아키텍처를 온전히 구현 할 수가 없다.

물론 개발자 처럼 알아야 하는건 아니지만, 코드를 가지고 개발자와 이야기를 할 정도가 되어야 한다.

 

그래서 Application단의 아키텍처 또한 알아 두어야 한다. MVC패턴부터 시작해서 LayerdArchitecture, HexagonalArchitecture등 애플리케이션을 구현하기 위한 애플리케이션 단의 아키텍처도 하나하니씩 정리해보자.

 

Hexagonal 아키텍처를 내 마음대로 인터넷을 보고 구현을 해보았다.

정상적인 아키텍처 인지 그리고 아키텍처가 이야기하는 장점을 그대로 살렸는지는 잘 모르겠다.

일단 그래도 현재의 애플리케이션 아키텍처가 어떤 상태인지 그려보면 아래와 같다.

일단 구현하고, 장점은 쉽게 서비스를 붙일수 있다. 매우 편하다.

이왕 구현한거 조금 확장시켜 보기로 했다.

1. port and adapter 패턴으로 인터넷에서 자료를 로컬에 다운받고 해당 파일을 읽어서 패러럴하게 동작하는 기능을 만든다.

→ 패러럴하게 동작하게끔 구현하지는 않았는데 일단 캐글에서 데이터 셋을 다운받고, 해당 파일의 헤더를 읽어서 DB에 자동으로 테이블을 만들고 컬럼까지 만들어주는걸 구현했어, Postgresql과 H2DB에 각각 동작하도록 만들었어, 하지만 역시 헛점은 존재하지, 컬럼 사이즈를 VARCHAR(255)로 모든 컬럼이 생성된다는 치명적? 헛점이 생겼어 근데 이건 뭐 나중에 좋은 방법으로 바꾸면 되지 않을까? 방법이 있겠지? 아 그리고 데이터 Path를 Static하게 넣어 놓은것도 하드코딩 이라고하지... 이것도 나중에 방법을 정해서 바꾸면 됨. 암튼 기능 구현은 했으니까 패스

 

2. 역시 port and adapter 패턴으로 TCP/IP 커넥션을 통해 서버 클라이언트 구조의 기능을 만든다.

→ 이건 사실 그렇게 어려운 작업은 아닌데 아직 안했어, 일단 서버 클라이은트 구조를 하려면 서버와 클라이언트가 있어야 하는데 나는 로컬이란 말이지... 그래서 서버 클라이언트 구조 설계를 어떻게 할지 조금 고민하고 구현해도 늦지 않을거 같아서 일단 보류.

 

3. MSA 처럼 1개의 기능이 1개의 DB를 사용하는 구조, 그리고 1개의 기능이 2개의 DB를 사용하는 구조를 만들어보자.

→ 이건 했지. Postgresql과 H2DB를 쓰고 있으니까, 물론 OOP하게 구현하지는 않았지. 개선이 필요해.

 

4. (추가) 카프카를 달아보자. 카프카로 퍼블리싱이랑 프로듀싱해보자.

 

5. (추가) DB를 하나 더 달아보자. Mysql? 나중에 Redis랑 Monggo 까지 달아보자.

 

6. (이건 가능할지 몰겠는데) 약 3~4개의 기능을 하나의 html에 뿌려보자. MicroFeontend처럼? 가능할까?

 

7. (이것도 가능할지 몰겠는데) 헥사고날아키텍처에 MSA를 접목 시켜보는건?

 

8. JAVA에서 파이썬 코드 실행시켜서 구현하고, 빌드해서 Jar로 말고, 서버에서 구동해보기?

→ 이건 했는데, JAVA에서 캐글 데이터셋을 받으려면 여러가지 작업? 을 해야하는데 레퍼런스도 없고 해서 자바에서 파이썬 코드를 실행하도록 구현했음.

 

9. 헥사고날 그만하고, 레이어드랑, 클린 해야지? 코드 깃헙에 언제 올릴래...?

 

10. Mybatis 적용시켜보자.

→ 이거슨 적용 완료.

 

현재 테스트 용도로 개발하고 있는 코드는 아래에 업로드 되어 있다.

브랜치를 seungkim 브랜치로 변경해야 한다.

https://github.com/Nanninggu/PT.git

 

GitHub - Nanninggu/PT: PersonalTraining

PersonalTraining. Contribute to Nanninggu/PT development by creating an account on GitHub.

github.com

계속 기능을 추가하고 테스트를 해보자.

 

- 끝 -

'ApplicationArchitecture (AA)' 카테고리의 다른 글

ApplicationArchitecture 그려보기  (0) 2024.04.23
(1) Hexagonal Architecture - 설계  (0) 2024.04.16