본문 바로가기
반응형

디자인패턴7

Strangler application 스트랭글러 패턴 개발에는 다양한 디자인 패턴이 있다. 다양한 패턴에 대해서는 아래 참고 포스팅을 참고 바란다. 이번 포스팅은 요즘 다양한 기업에서 다양한 프로젝트를 진행중인 모놀리식 -> MSA 프로젝트로 변환 작업시 변환 패턴이다. 먼저 아래 그림을 보면 왼쪽 처음엔 모든 코드가 Monolith 였는데 점차 변화되면서 결국 모든게 MSA로 바뀐 그런 패턴이다. 개발 패턴이긴 하지만 방법에 대한 패턴이라기 보다는 방향성에 대한 패턴인듯 하다. 참고 포스팅 https://thenicesj.tistory.com/87 디자인패턴 정의와 종류 소프트웨어 개발을 할때 사용되는 디자인 패턴이란 과거에 소프트웨어 개발 과정에서 발견된 설계 노하우를 축적하여 그 방법에 이름이 붙여서 이후에 재사용 하기 좋은 형태로 특정 규약을 만 t.. 2024. 3. 24.
SAGA 패턴 이전 포스팅에서도 디자인 패턴에 대해서 다룬 글들이 몇개 있었다. 아래 참고 포스팅을 확인해보면 도움이 될것이다. 이번에 다룰 디자인 패턴은 SAGA 패턴이다. 해당 패턴은 MSA 구조에서 많이 사용되는 패턴으로 MSA 역시 아래 참고 포스팅을 참고하길 바란다. SAGA 패턴이란? 마이크로서비스들끼리 이벤트를 주고 받아 특정 마이크로서비스에서의 작업이 실패하면 이전까지의 작업이 완료된 마이크서비스들에게 보상 (complemetary) 이벤트를 소싱함으로써 분산 환경에서 원자성(atomicity)을 보장하는 패턴이다. 즉 작업들이 하나의 트랜잭션으로 이루어져있고 하나라도 실패를 하면 작업이 rollback 된다고 생각을 하면 된다. 그림으로 보면 다음과 같다. 하나의 App 은 물론 하나의 기능이 될수도 .. 2022. 7. 5.
CQRS 패턴 CQRS란? Command Query Responsibility Segregation 의 약자로 단어 그대로 해석하면 명령 조회 책임 분리 라는 뜻 애플리케이션들을 구성하는 아키텍처에 대한 하나의 패턴 애플리케이션을 구현함에 있어 명령과 조회에 대한 책임을 분리하는 것 등장배경 일반적인 애플리케이션은 데이터를 연결된 데이터베이스에 레코드로써 CRUD 작업을 한다. 그리고 애플리케이션이 데이터를 레코드로 저장하는 과정에서 데이터는 특정한 모델로써 다뤄진다. 예를들어 계좌 잔액 이라는 데이터는 애플리케이션 내에서 id, date, account 등과 같은 속성을 지니는 클래스 모델로써 다뤄지고 결국 데이터베이스는 거래내역을 나타내는 레코드로써 저장되어 CRUD가 될수 있다. 그러나 이런 모델들은 애플리케이션.. 2022. 6. 29.
객체지향 디자인 패턴 심화 정리 part.3 디자인 패턴 정리 마지막 포스팅이고 이번에는 decorator factory method abstract factory mediator composite 이렇게 다섯개의 패턴을 설명으로 마치도록 하겠다. decorator 기본적으로 동작하는 메서드가 있고 추가적으로 하나씩 추가해가면서 동작을 하게 되는 작업을 할때 사용되는 패턴이다. 예를들어서 전투기 슈팅게임을 예로들면 기본 공격이 있고 아이템을 먹을때마다 좀더 미사일이 많이 나가거나 하는 것과 비슷하다. 추가로 먹는 아이템들을 하나하나 클래스로 만들고 부모 클래스인 기본공격을 모두 상속 받는다. 그리고 아이템을 먹게되면 부모의 기본공격 + 자식에서 만들어진 아이템의 추가공격 이렇게 합쳐져서 미사일이 나간다고 생각을 하면된다. factory method.. 2022. 3. 13.
객체지향 디자인 패턴 심화 정리 part.2 part.1에 이어서 이번 포스팅에서 다뤄볼 패턴은 다음과 같다. adapter proxy facade template method adapter 말그대로 어댑터를 생각하면 편하게 이해할수 있다. 우리나라에서 사용하던 가전기기를 해외에서 사용을 하려면 어댑터를 챙겨가곤 한다. 어댑터는 형식이 다른 둘 사이에 연결이 되어 그 둘을 연동할때 사용을 해주게 된다. 이걸 프로그래밍에 입혀보면 인터페이스가 다른 객체를 같은 형식에서 사용할수 있게 하는 디자인이다. 외부에서 받아오는 코드를 자신이 만들어둔 클래스에 입히게 되는데 외부에서 받아온 코드는 지금 짜여진 코드와 형식과 변수 등등 모든것이 다를것이다. 이 외부 코드 하나만을 위해서 내부 코드를 바꾸거나 디자인 변경은 비효율적인 작업이다. 그림으로는 다음과 .. 2022. 3. 12.
객체지향 디자인 패턴 심화 정리 part.1 포스팅을 읽기 전에 아래 참고 포스팅에서 간단한 디자인패턴에 대한 정의와 종류에 대해서 읽고 오면 도움이 될것이다. 그리고 이번 포스팅에서는 좀더 심화된 내용을 다뤄볼 것이다. 저번 포스팅에서 있던 내용은 중복으로 설명이 되는 부분도 있으나 좀더 자세하게 심화된 내용으로 설명을 할것이다. part.1에서는 singleton strategy state command 패턴 들에 대해서 설명을 해본다. singleton 패턴 소프트웨어를 만들때 클래스의 객체가 하나만 만들어 져야할 상황이 있다. 예를들어 페이지에서 셋팅에 다크모드로 설정을 해두면 어느 페이지로 이동을 하든 다크모드는 유지가 되어야한다. 이럴 경우 반드시 하나의 셋팅 객체만 만들어 져야한다. 일반적으로 페이지에서 클래스 호출할 경우를 보면 여러.. 2022. 3. 11.
디자인패턴 정의와 종류 소프트웨어 개발을 할때 사용되는 디자인 패턴이란 과거에 소프트웨어 개발 과정에서 발견된 설계 노하우를 축적하여 그 방법에 이름이 붙여서 이후에 재사용 하기 좋은 형태로 특정 규약을 만들어서 정리해둔것을 말한다. 즉 효율적으로 알고리즘을 만들고 코드를 만들기 위한 방법론이라고 생각하면 될듯하다. 특정 한두개의 패턴을 외우기 보다는 다양하게 이해를 하고 적시적소에 맞게 자신의 코드에 녹여내면 될듯 하다. 종류는 대분류로는 생성패턴, 구조패턴, 행위 패턴으로 나뉘고 몇가지만 살펴보면, 생성패턴에서는 가장 유명한 디자인패턴인 싱글톤 패턴이 있다. 클래스의 인스턴스가 하나임을 보장하고 접근할수 있는 전역적인 접근점을 제공한다. 그리고 또다른 유명한 패턴은 추상팩토리 패턴이다. 구체적인 클래스를 지정하지 않고 관련.. 2022. 1. 14.
반응형