분류 전체보기


Decorator Pattern 객체에 추가적인 책임을 동적으로 부여할 수 있도록 설계한다.데코레이터는 서브클래스(상속)을 사용하지 않아도 유연하고 융통성 있는 기능 확장을 가능하게 한다.상속으로 문제를 풀면 너무 많은 상속 관계가 발생할 수 있음상속을 사용하지 않고, 새로운 기능을 추가하는 것이 목표데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 추가할 수 있도록 함데코레이터 패턴에서의 상속은 기능(행동)을 물려받기 위해서가 아니라 형식을 맞추기 위해서 사용된다. 1. Component : 각 구성요소는 직접 쓰일 수도 있고 데코레이터로 감싸져서 쓰일 수도 있음. 클래스 또는 인터페이스2. ConcreteComponent : 새로운 행동을 동적으로 추가3. Decorator : 자신이 장식할 구성..


이번 포스팅에서는 GCP에서 지속적 통합/배포라고 불리는 CI/CD 파이프라인을 구축해보는 작업을 해보도록 하겠다. CI/CD 란? CI는 지속적 통합(Continuous Integration) CD는 지속적 배포(Continuous Deployment)을 나타낸다. CI, Continuous Integration (지속적 통합): 개발자들이 작업한 코드를 지속적으로 통합하여 통합 문제를 최소화하고, 코드 변경이 일어날 때마다 자동으로 빌드 및 테스트가 실행되며, 코드베이스에 통합시키도록 한다. CD, Continuous Deployment (지속적 배포) : CI를 통과한 이후, 자동화된 프로세스를 통해 테스트를 통과한 코드를 실제 환경으로 자동으로 프로덕션 환경에 배포하는 파이프라인 구축을 목적으로 ..


Observer Pattern Observer 패턴은 객체 간에 일대다 의존성을 정의하며, 어떤 객체의 상태가 변경되면 그 객체에 의존하는 다수의 객체들이 자동으로 알림을 받아 업데이트될 수 있도록 하는 디자인 패턴이다. 해당 디자인 패턴에는 두 가지 주요 역할이 있다.Observer(관찰자): 관찰 대상인 Subject의 상태 변화를 감시하고, 변화가 있을 때마다 적절한 Action을 취하도록 설계한다.구현: Observer 인터페이스나 추상 클래스를 통해 정의되며 이 인터페이스에는 주로 update() 메서드가 포함되어 있어서 Subject로부터의 업데이트를 처리한다.Subject(주제): 상태 변화가 일어날 때, 그 변화를 Observer들에게 알리는 역할을 한다. Subject는 Observer들..


Strategy Pattern 같은 종류의 작업을 하는 알고리즘을 정의, 각 알고리즘을 캡슐화, 그리고 알고리즘들을 바꿔 유동적으로 사용할 수 있도록 하는 디자인패턴.알고리즘을 사용하는 클라이언트로 부터 독립적으로 알고리즘을 바꿔서 적용시킬 수 있도록 한다.클라이언트에 모든 알고리즘을 포함시키는 것은 클라이언트 코드의 양이 늘어나고 복잡해진다. 이는 유지 보수가 어려워지며, 새로운 알고리즘 추가를 하려면 기존 코드를 수정해야 하는 문제가 있다. Context : 캡슐화된 알고리즘을 멤버 변수로 포함하며, 알고리즘을 교환해서 적용시킬 수 있다.Strategy : 컴파일 시점에서 사용하는 캡슐화된 알고리즘, 실제 구현은 하위 Strategy(n) 클래스에 위임, 인터페이스 혹은 추상클래스로 구현한다.St..


Iterator Pattern 여러 요소들을 담고 있는 객체의 내부 구조에 대한 이해 없이 각 요소를 순서대로 접근하고 사용할 수 있도록 방법을 제공한다. Collection에서의 Iterator Pattern 사실 우리가 이미 일반적으로 사용하고 있는 Collection의 경우에도 Iterator 패턴이 적용되어 있다. import java.util.ArrayList;import java.util.List;public class Main { public static void main(String[] args){ List list = new ArrayList(); for(Integer n : list){ System.out.println(n); ..


Singleton pattern 클래스가 하나의 인스턴스만을 만들 수 있도록 하고, 어디서나 생성된 인스턴스에 접근할 수 있도록 하는 디자인 패턴을 말한다.시스템에서 다른 상태의 인스턴스가 여러 개 필요 없는 경우 해당 디자인 패턴을 사용한다. 여러 객체가 생성되면 관리가 어려우며, 이를 위해 객체 생성자를 중앙 관리하게 하고, 객체가 1개라서 일관된 상태의 결과를 만들게 된다. 고전적인 싱글턴 패턴 public class Singleton { private static Singleton instance = null; private Singleton() { System.out.println("Singleton constructor"); } public static Singleton getI..


이전 포스팅에서 GCP의 쿠버네티스 클러스터를 생성하고, 클러스터 내부의 데이터베이스와 Application 작업을 생성하고, 네트워크 연결까지를 다루었다. 이번 포스팅에서는 Kubernetes Ingress 설정과 이를 통해서 HTTPS 적용을 해보도록 하겠다. Kubernetes Ingress Kubernetes 클러스터 내에서 HTTP 및 HTTPS와 같은 웹 트래픽을 관리하고 라우팅하기 위한 API 및 리소스이다. 클러스터 외부에서 내부로 들어오는 HTTP/HTTPS 요청을 처리하고 여러 서비스들 앞에서 라우터 역할을 하고, 클러스터의 진입점 역할을 한다. 웹 애플리케이션의 경로 기반 라우팅, 로드 밸런싱, SSL/TLS 암호화, 호스트 기반 라우팅 등 다양한 설정을 지원한다. 즉 Kubernet..


이전 포스팅에서 GCP의 쿠버네티스 클러스터를 생성하고, 클러스터 내부의 데이터베이스와 Application 작업을 생성해보는 과정까지를 거쳤다. 이번 포스팅에서는 Cloud Shell을 통해 Kubernetes 클러스터에 접속해보고, 클러스터 내부간의 연결 및, 클러스터 외부에서 Application에 접근을 가능하도록 하기 위해서 네트워크 설정을 해보도록 하겠다. 쿠버네티스에 관한 내용은 아래 포스팅에 남겨두었으니 참고하면 좋을 것 같다. https://sjh9708.tistory.com/99 [Kubernetes] 쿠버네티스의 개념과 구성 요소 쿠버네티스란? 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 플랫폼의 하나로, 분산 시스템을 관리하고 배포하는 데 사용된다. 쿠버네티스는 컨테이너..


이번 포스팅에서는 오토 스케일링과 무중단 배포를 위해서, GCP 인스턴스를 쿠버네티스 클러스터를 사용해서 생성하고 관리하는 과정을 다루어 보려고 한다. 쿠버네티스에 관한 내용은 아래 포스팅에 남겨두었으니 참고하면 좋을 것 같다. https://sjh9708.tistory.com/99 [Kubernetes] 쿠버네티스의 개념과 구성 요소 쿠버네티스란? 쿠버네티스(Kubernetes)는 컨테이너 오케스트레이션 플랫폼의 하나로, 분산 시스템을 관리하고 배포하는 데 사용된다. 쿠버네티스는 컨테이너화된 애플리케이션을 자동화된 방식으 sjh9708.tistory.com 쿠버네티스 클러스터 생성하기 클러스터는 쿠버네티스가 관리하는 전체 시스템을 의미하며, 클러스터에는 여러 대의 서버, 가상 머신으로 구성된 노드들이 ..