전체 글
-
Micro ServiceSoftware Architecture 2023. 9. 28. 22:35
마이크로서비스는 소프트웨어 개발 패러다임의 하나로, 애플리케이션을 독립적인 서비스로 분해하는 아키텍처 스타일을 말한다. 독립적으로 존재하기 때문에 자체적으로 실행 가능하며, 데이터 베이스, 저장소 및 네트워크를 포함한 필요한 모든 것을 갖추고 있다. 서버 개발을 하다보면 여러가지 많은 기능을 만들어야하는데 하나의 프로젝트, 하나의 프로그램에 수 많은 서비스가 존재하게 되면 테스트, 컴파일, 빌드, 배포 등의 작업을 진행할 때에 상당한 시간이 소요 되고, 단일 서비스의 라이브러리 혹은 프레임워크의 버전 호환 문제 등 유지 보수 작업에도 어려움이 따른다. 이런 Monolith Architecture의 문제점을 해결할 수 있는 방법으로 Microservice Architecture 를 사용할 수 있다. 마이크..
-
CQRS 아는척 하기Software Architecture 2023. 9. 28. 22:34
명령 모델이란? - Command Query Responsibility Segregation :: CQRS 아는척하기 명령 (Command) 시스템의 데이터를 변경하는 기능을 말한다. 기능 예 (주문 취소, 배송 완료) 쿼리 (Query) 시스템의 데이터 조회를 조회하는 기능을 말한다. 기능 예 (주문 목록) 책임 (Responsibility) 구성 요소의 역할 구성 요소(모델) 클래스, 함수 모듈/패키지 웹서버/DB 분리 (Segregation) 역할에 따라 구성 요소 나눈다는것을 뜻한다. 좀 더 간단히 말하면 시스템 데이터를 변경하는 코드와 시스템 데이터를 조회하는 코드를 따로 만드는것이 CQRS이다. (주의할 점으로 코드만 나누는것이 아닌 구현 방식이나 시스템 규모에 따라 DB를 나누기도하고 프로세..
-
Prototype PatternDesign-Pattern/Creational Pattern 2023. 9. 28. 22:32
개요 프로토타입 패턴은 객체 생성을 최적화하고 새로운 객체를 기존 객체의 복사를 통해 생성하는 디자인 패턴이다. 문제점 객체가 있고 그 객체를 외부에서부터 복사하는 것은 객체의 필드 중 일부가 비공개일 경우 항상 가능하지 않다. 또한 객체의 복제본을 생성하려면 객체의 클래스를 알아야 하므로, 코드가 해당 클래스에 의존하게 되고, 메서드의 매개 변수가 일부 인터페이스를 따르는 모든 객체를 수락한다면 우리는 그 객체가 따르는 인터페이스만 알고, 그 객체의 구상 클래스는 알지 못 한다. 해결책 프로토타입 패턴은 실제로 복제되는 객체에 복제 프로세스를 위임한다. 패턴은 복제를 지원하는 모든 객체에 대한 공통 인터페이스를 선언하고 이 인터페이스를 사용하면 코드를 객체의 클래스에 결합하지않고도 해당 객체를 복제할 ..
-
Factory MethodDesign-Pattern/Creational Pattern 2023. 9. 28. 22:32
개요 팩토리 메서드는 부모 클래스에서 객체들을 생성할 수 있는 인터페이스를 제공하지만, 자식 클래스들이 생성될 객체들의 유형을 변경할 수 있도록 하는 생성 패턴이다. 이는 클라이언트테서 직접 new 연산자를 통해 제품 객체를 생성하는 것이 아닌, 제품 객체들을 생성하는 공장 클래스를 만들고, 이를 상속하는 서브 공장 클래스의 메서드에서 여러가지 제품 객체 생성을 각각 책임 지는 것으로 객체 생성에 필요한 과정을 템플릿 처럼 미리 구성해놓고, 객체 생성에 관한 전처리나 후처리를 통해 생성 과정을 다양하게 처리하여 객체를 유연하게 정할 수 있는 특징이 있다. 적용 시기 팩토리 메서드는 함께 동작해야 하는 객체들의 정확한 유형과 의존 관계를 모르는 경우 팩토리 메서드는 객체 생성 코드와 실제로 사용하는 코드를..
-
BuilderDesign-Pattern/Creational Pattern 2023. 9. 28. 22:09
개요 빌더는 복잡한 객체를 단계별로 생성할 수 있도록 하는 생성 디자인 패턴으로 이 패턴을 사용하면 같은 제작 코드를 사용하여 객체의 다양한 유형과 표현을 제작할 수 있다. 문제점 먼저 빌더 패턴 이전에 사용된 생성자 패턴을 살펴보자 점층적 생성자 패턴 점층적 생성자 패턴(Telescoping Constructor Pattern)은 필수 매개변수와 함께 선택 매개변수를 0개, 1개, 2개 … 받는 형태로, 우리가 다양한 매개변수를 입력받아 인스턴스를 생성하고 싶을 때 사용하던 생정자를 오버로딩 하는 방식이다. class Hamburger { // 필수 매개변수 private int bun; private int patty; // 선택 매개변수 private int cheese; private int le..
-
Abstract FactoryDesign-Pattern/Creational Pattern 2023. 9. 28. 22:08
디자인 패턴들 refactoring.guru 개요 추상 팩토리 패턴은 연관성이 있는 객체 군이 여러 개 있을 경우 이들을 묶어 추상화하고, 어떤 구체적인 상황이 주어지면 팩토리 객체에서 집합으로 묶은 객체 군을 구현화 하는 생성 패턴이다. 클라이언트에서 특정 객체를 사용할 때 패토리 클래스만을 참조하여 특정 객체에 대한 구현부를 감추어 역할과 구현을 분리시킬 수 있다. 즉, 추상 팩토리의 핵심 제품군 집합을 타입 별로 찍어낼 수 있다는 점이 포인트이다. 예를들어 모니터, 마우스, 키보드를 묶은 전자 제품군을 삼성 제품인지, 애플 제품인지에 따라 집합이 브랜드 명으로 여러 갈래로 나뉘게 될 때, 복잡하게 묶이는 이러한 제품들을 관리와 확장에 용이하게 패턴화 한것이 추상 팩토리이다. 문제점 가구 판매장을 ..
-
CI-CD(Continuous Integration-Continuous Delivery)Infra 2023. 9. 28. 22:06
참고 블로그 RedHat LINE Engineering 재테크하는 개발자 개념 CI/CD (Continuous Integration/Continuous Delivery)는 애플리케이션 개발 단계를 자동화하여 애플리케이션을 더욱 짧은 주기로 고객에게 제공하는 방법으로 CI/CD의 기본 개념은 지속적인 통합, 지속적인 서비스 제공, 지속적인 배포에있다. CI/CD는 새로운 코드 통합으로 인해 개발 및 운영팀에 발생하는 문제(일명 “통합 지옥(integration hell)”)를 해결하기 위한 솔루션이 될 수 있다. 특히, CI/CD는 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포에 이르는 애플리케이션의 라이프사이클 전체에 걸쳐 지속적인 자동화와 지속적인 모니터링을 제공하는데 이러한 구축 사례를 일..