헥사고날 아키텍처(Hexagonal Architecture)는 다른 말로, 포트와 어댑터 아키텍처(Ports and Adapters Architecture)이다. 해당 아키텍처의 목표는 외부(외부 인터페이스나 인프라스트럭쳐)의 변경에 영향을 받지 않는 핵심 코드를 만들고 이를 견고하게 관리하는 것이다. 계층형 아키텍처(Layered Architecture)의 문제점 # DB 주도 설계 - 계층형 아키텍처는 DB Layer가 토대이다. 즉, DB 주도 설계로 이어질 가능성이 크다. - 이는 비즈니스 관점에서 적합하지 않다. - 도메인 로직과 영속성을 구분하여 설계하는 것이 어려워지며, 도메인 코드가 영속성 계층의 영향을 받을 가능성이 커진다. # 암묵적인 의존성 - 계층형 아키텍처에서는 동일 계층의 컴포넌..
레이어드 아키텍처(Layered Architecture)가 무엇인지 알아보자. 소프트웨어 아키텍처란? 소프트웨어 아키텍처란, 소프트웨어 시스템의 전체적인 구조와 구성요소들 간의 상호작용을 설계하는 것을 말한다. 쉽게 말해, 건축물의 뼈대를 잡는 것과 같은 과정이다. 건축물의 구조와 종류는 굉장히 다양하다. (철근 콘크리트, 철골, 목조, …) 어떤 자재를 사용하고, 해당 자재들을 어떻게 조립하는지에 따라 건축물의 특성은 크게 달라진다. 이와 같이 소프트웨어 아키텍처는 시스템의 전체적인 동작을 결정하고, 시스템의 품질 성능(성능, 확장성, 유지보수성, 보안 등)에 직접적으로 영향을 미친다. 소프트웨어 아키텍처를 선택할 때는 다양한 요소(요구사항, 복잡성, 기술 스택, 경험, 비용 및 시간 등)들을 고려하여..
최범균님의 프로그래밍 초식 - 지네릭 변성(java) 를 보고 정리한 글입니다. (출처: https://youtu.be/PtM44sO-A6g) 제너릭 예시 - List 자바에서 우리가 가장 쉽게 접하고 있는 제너릭 예시는 List 이다. 다음은 List 내부 구현이다. public interface List extends Collection { boolean add(E e); E get(int index); /***/ } List는 제너릭을 활용하기 때문에, 우리는 다양한 타입의 List를 선언할 수 있다. List messages = new ArrayList(); List users = new ArrayList(); 제너릭을 활용하면, 잘못된 타입의 값을 넣는 실수를 컴파일 타임에 예방을 해준다. 아래..