한화 시스템 부트 캠프 11주차 회고
안녕하세요 벌써 11주차 회고록에 뛰어 든 김아쿠입니다. 일단 오늘도 적을지 말지 정말 고민을 많이 했는데요.
매번 개선해야 할 점에 블로그를 박박 적으면서 막상 안 고치니까 적는 의미가? 없더라고요.
그래서 이번엔 정말... 울면서 적고 있습니다. 지금 해야 할 게 너무 많네요.
저는요. 일단 12주차가 프로젝트랍니다 ~ ! 😀😀 어떻게 됐을 지는 후에 말씀 드리겠습니다.
일단 11주차에서 가장 중요하게 배운 것은 N+1문제 해결, 헥사고날 아키텍처입니다.
간단하게 설명만 드리고, 헥사고날 아키텍처를 좀 더 자세하게 말씀 드리겠습니다.
N+1 문제
연관 관계에서 발생하는 문제로, 연관 관계가 설정된 엔티티를 조회할 경우에 조회된 데이터 갯수N 만큼 연관 관계의 조회 쿼리가 추가로 발생하여 데이터를 읽어오게 된다. 그니까 굳이 없어도 되는 것을 추가로 전부 다 가져오는 문제를 말 하는 거다.
[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
헥사고날 아키텍처 좀 더 공부하기 효율적으로 사용하려면? 어떤 방식으로? 물음표 살인마에서 일반인으로 돌아오자.
