본문 바로가기
728x90
반응형

분류 전체보기65

[Hexagonal Architecture #1] 개념, 용어 정리부터 시작 개념과 용어가 헷갈리기 시작하면 핵심에 도달할 수 없기에 우선 개념과 용어부터 정리하려고 한다. 지극히 주관적인 정리가 될 것이기 때문에 잘못된 정보를 전달할 수도 있을 것이다. 헥사고날 아키텍처 DDD 를 잘 표현해 줄 수 있는 아키텍처 중 하나가 헥사고날 아키텍처이다. 포트 - 어댑터 아키텍처라고도 불리는 이 아키텍처의 핵심은 의존성의 방향이 외부로 향하지 않게 관리하여 외부 영역에 의한 도메인 영역의 오염을 막는 것이다. 헥사고날 아키텍처의 전반적인 개념은 아래와 같다. 헥사고날의 가장 중심에는 도메인 영역이 자리한다. 도메인 영역의 바깥쪽에는 도메인을 사용해서 어떠한 요구사항(시나리오, 비지니스 로직)을 충족시키는 애플리케이션 영역이 자리한다. 외부 영역인 웹, 앱에서는 요구사항을 충족시키기 위해.. 2022. 5. 11.
[Design Pattern] Adapter Pattern, 어댑터패턴 어댑터 패턴은 스파이의 냄새가 나는 패턴이다. 본래의 모습을 숨기고 다른 모습으로 살아가는 스파이. 어떤 라이브러리를 수정해서 사용하거나, 새로운 기능을 추가하고 싶지만 그 라이브러리를 수정하기 힘든 상황에 사용할 수 있는데, 수정하고 싶은 라이브러리를 감싸서 새로운 인터페이스를 정의해서 사용한다. 어댑터 패턴은 클래스 어댑터 패턴, 객체 어댑터 패턴이 있는데, 클래스 어댑터 패턴은 다중 상속을 해야 하기 때문에 마음에 들지 않는다. 자바에서는 클래스의 다중 상속을 지원하지 않지만 인터페이스의 다중 상속은 허용하기 때문에 구현은 가능하다. 코드 양이 늘어나는 단점이 있지만 구성을 사용하는 객체 어댑터 패턴이 더 올바르다고 생각한다. Adapter Pattern 어댑터 패턴의 등장인물은 다음과 같이 4명이.. 2022. 5. 9.
[Design Pattern] Command Pattern, 커맨드 패턴 커맨드 패턴 하면 서블릿 / JSP 시절 컨트롤러 만들 때 컨트롤러를 다 커맨드로 만들고 프론트 컨트롤러에서 분기 처리하던 생각이 난다. interface Command { excute(); } class GetUserController implements Command { excute() {... userService.get()...} } class FrontController extends HttpServlet { public void service(HttpServletRequest request, HttpServletResponse response) { final String uri = request.getURI() final String method = request.getMethod() if (.. 2022. 5. 6.
맥북 액정을 맑게 일본에서 SI 로 일할 때는 윈도우 노트북과 윈도우 데스크톱을 사용했었는데 한국에 와서 맥북을 사용하게 되었다. 오!! 터미널!! (사실 윈도우에서 깃 터미널 사용하거나 wsl 사용하면 되지만..) 오!! brew install!! 그러나 액정이 너무 쉽게 더러워지고 잘 닦이지도 않았다. 으.. 비싼 액정 천?? 을 사야 하나 고민하다 어느 날 화장실 거울 청소 중 유리세정 티슈로 닦으면 잘 닦이지 않을까 해서 조심히 아주 조심히 구석을 닦아 보았다. 어메이징! 맥북 액정이 맑고 투명하게 닦인다. 다른 제품은 안써봐서 모르겠는데 홈플러스에서 파는 유리세정 티슈로 잘 닦고 있고, 아직까지 액정에 문제는 없다. 2022. 5. 4.
[Design Pattern] Singleton Pattern, 싱글톤 패턴 말도 많고 탈도 많은 패턴계의 뜨거운 감자 싱글톤 패턴. 개인적으로 디자인 패턴이라기보다 코딩 기법이라고 생각한다. 애플리케이션 전체적으로 단 하나의 인스턴스를 사용하기 위해 사용되는 코딩 기법. 싱글톤이 늘 논의가 되는 곳은 자바 세상이기도 하고 각 언어마다 멀티스레드 환경을 제어하는 방법이 다르기는 하지만 자바, 코틀린, 고, 타입스크립트에서 어떻게 구현하는지 알아보자. 자바에서 일반적으로 알려진 싱글톤 코딩 기법이 왜 멀티스레드에서 깨지는지 등의 논의는 접어두고 각 언어마다 내 마음에 든 기법을 하나씩 소개하려고 한다. Java Singleton Pattern 멀티 스레드를 락으로 동기화하는 synchronized, 캐시가 아닌 항상 메인 메모리에서 인스턴스를 가져오는 volatile 등이 필요 없.. 2022. 5. 2.
[Design Pattern] Abstract Factory Pattern, 추상 팩토리 패턴 팩토리 메서드 패턴이 제품을 생산하기 위한 것이라면 추상 팩토리 패턴은 제품을 구성하는 부품? 재료? 를 생산하기 위한 것이다. [Design Pattern] Factory Method Pattern, 팩토리 메서드 패턴 DIP(Dependency Inversion Principle), 의존성 역전 원칙 변경에 강한 설계를 하기 위한 방법 중 잘 알려진 SOLID 원칙의 하나로 의존 흐름을 역전시키는 방법으로, 육각형 아키텍처의 포트-어댑터도 이 방법 tinkerbellbass.tistory.com Abstract Factory Pattern 제품을 구성하는 부품들 중 연관이 있는 것을 묶어 생산하는 것이 추상 팩토리 패턴의 핵심이다. 구체적으로는 제품을 구성하는 부품을 만드는 인터페이스를 정의하고 그 .. 2022. 4. 29.
728x90
반응형