ETC/한화시스템

한화 시스템 부트 캠프 11주차 회고

디아쿠 2024. 7. 14. 23:10

스프링을 끝낸 사람

 

안녕하세요 벌써 11주차 회고록에 뛰어 든 김아쿠입니다. 일단 오늘도 적을지 말지 정말 고민을 많이 했는데요.

매번 개선해야 할 점에 블로그를 박박 적으면서 막상 안 고치니까 적는 의미가? 없더라고요.

그래서 이번엔 정말... 울면서 적고 있습니다. 지금 해야 할 게 너무 많네요.

 

저는요. 일단 12주차가 프로젝트랍니다 ~ ! 😀😀 어떻게 됐을 지는 후에 말씀 드리겠습니다.

 

일단 11주차에서 가장 중요하게 배운 것은 N+1문제 해결, 헥사고날 아키텍처입니다.

간단하게 설명만 드리고, 헥사고날 아키텍처를 좀 더 자세하게 말씀 드리겠습니다.

 

N+1 문제
연관 관계에서 발생하는 문제로, 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수N 만큼 연관 관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 그니까 굳이 없어도 되는 것을 추가로 전부 다 가져오는 문제를 말 하는 거다.

https://d-aqu.tistory.com/29

 

[JPA] N+1 문제 해결

N+1 문제란 ?연관 관계에서 발생하는 이슈로 연관 관계가 설정된 엔터티를 조회할 경우에 조회된 데이터 개수(N)만큼 연관관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 이를 N+1

d-aqu.tistory.com

이 문제는 저번에 적어두긴 했으니 참고하시면 됩니다. (날로 먹기 😝)

 

자 이제 정말 중요한 ㅋㅋ

Hexagonal architecture

 

를 말 하기 전에, 소프트웨어 아키텍처란 소프트웨어 시스템의 전체적인 구조와 구성요소들 간의 상호작용을 설계하는 것을 말한다. 그중 가장 기본적인 레이어드 아키텍처를 사용 했고, 이번 주차엔 Hexagonal architecture 를 배웠다.

유연한 확장성을 가지도록 구현한 방법 - 레이어드 아키텍처

 

얘가 헥사고날 아키텍처

 

유연한 확장성을 가지도록 구현하는 방법이 헥사고날 아키텍처이다. 

장점으로는

  • 유연성 : 외부 시스템이나 인프라아의 의존성을 낮춰, 구성 요소를 쉽게 교체하거나 업데이트 할 수 있다.
  • 테스트용이성 : 비지니스 로직을 독립적으로 테스트할 수 있어 품질 향상과 개발 속도 향상에 도움이 된다.
  • 유지보수성:책임이 분리되어 있어 코드의 이해와 수정이 용이하고, 변화에 빠르게 적응 가능하다.

단점으로는

  • 구현 복잡성 : 포트와 어댑터를 구성하고 관리하는 데 복잡성이 있다.
  • 초반 개발 시간 증가: 아키텍처를 처음 구축할 때 시간과 노력이 더 필요하다

입력 포트는 인터페이스

웹 어댑터, 외부 시스템 어댑터 : 컨트롤러

웹어댑터 → 입력포트 → 유즈케이스 → 출력포트 → 영속성 어댑터 의 순서라고 생각하면 된다. 

이렇게 보면 어떤식으로 구성 되는 지 이해가 된다.

 

기본 구조

이제 안에 필요한 내용들을 채워 나가면 된다.

 

약간의 구조를 설명 하자면 입력 포트에 있는 UseCase는 Command를 웹 어댑터로부터 전달 받고 실행하는 것이다.

UseCase에서만 메소드를 구현해서 갖다 쓰고, Service에선 이제 UseCase의 구현체를 만든다.

 

갖다 쓰는 거

 

영속성 어댑터를 만들 때 JPA를 쓸 거고(Repository 같은 애), 이는 DB에 저장 될 것이다.

 

이번 12주 차는 자바 프로젝트가 있는 날이다. 그간 배운 것을 총동원하여 구현해야 하는데, 다음 주에 내가 사라지면 멘탈이 작살 나 소멸 된 것이라고 다들 생각 해 주면 될 것 같다.

+ 정보처리기사 실기가 2주도 안 남았다. 다들 공부 방법 팁 있으면 알려주시면 감사합니다. 이거 언제 따냐 대체?

 

애매 할 땐 역시 그냥 

끝 !


 

Keep

 

요즘 그래도 제일 열심히 사는 것 같다 주말엔 총 복습하고 평일엔 당일 복습하고,,,

자격증 시험 준비와 같이 병행 하려니까 힘들긴 하지만 우선순위는 프로젝트로 정했다.

배움에 두려워 하지 말고 끝까지 해보자.

요즘 GPT한테 구현해줘가 아니라 얘랑 싸운다. 이게 왜 이렇게 되냐부터 시작해서 이해 못한 거를 박박 말 하고 싸운다.

결국 내가 지긴 하지만 그래도, 전보다 많이 나아졌다. 

 

Problem

 

없다. 내일 아침에 갈 땐 예외처리 마저 들으면서 가야지.

 

Try

 

헥사고날 아키텍처 좀 더 공부하기 효율적으로 사용하려면? 어떤 방식으로? 물음표 살인마에서 일반인으로 돌아오자.

 

마지막으로 내가 만든 ? 구운 ? 한우와 매쉬드 포테이토

 

진짜 끝 !

728x90