[Infra] 무중단 배포의 2가지 방법(Rolling Update, Blue-Green)
·
Infra
배포에는 무중단 배포와 중단 배포. 당연하게도 무중단 배포와 중단 배포의 차이점은 중단의 유무이다. 배포 중단 과정은 다음과 같다. 만약 다음과 같은 서비스가 있다고 하자. 해당 서비스에 배포를 한다고 하면 새로운 버전으로 업데이트를 하기 위해서는 기존에 연결된 서비스를 해제하고 새로운 버전으로 갈아끼운 뒤 다시 서비스를 해야 한다. 무중단 배포 반면에 무중단 배포는 여러 기술들을 이용해 배포되는 도중에 연결을 해제하지 않고 새로운 버전으로 변경한 뒤 지속해서 서비스를 유지하는 것이다. 지속적인 배포(CD)라고 볼 수 있다. 이런 무중단 배포를 사용하는 방식은 4가지가 있는데 2가지에 관해 소개하려 한다. Rolling Deployment Blue-Green Deployment Canary Deploym..
Spring Cloud
·
개발 기록
이틀 동안 Spring Cloud를 하였는데 또 가상머신 설정에서 막혔다. 뭐가 문제인걸까........... 원래 목표는 Spring Cloud 배포를 진행한 뒤 Nginx에 관한 자세한 공부였는데.. 슬프다..
Spring Cloud Config 설정
·
개발 기록
Spring Cloud Config를 설정하면 Spring의 application.yml 파일을 효율적으로 관리할 수 있다. 하지만, Github Actions의 파트를 생각하면 조금 애로사항이 있다.. 빌드를 할 때 Spring Cloud Config로부터 application.yml를 받아오자니 Spring Cloud Config 서버를 외부에서 접속할 수 있도록 포트를 열어줘야 한다. 하지만, 이는 당연하게도 보안적으로 좋지 않아 보인다. 그래서, Spring Basic Auth를 사용하려고 하였다. 하지만, 아무리 해도 접속이 안된다. AWS에서 지원하는 일회성 인증 서비스를 사용하면 될 수도 있을 것 같은데... 다른 방법을 찾고 싶다. 만약에 방법을 찾지 못한다면 Github actions의 ..
[Design Pattern] 프록시 패턴
·
Design Pattern
이번 포스팅은 디자인 패턴 중 하나인 프록시 패턴에 대해 알아본다. 코드와 상황은 전략 패턴에서 사용했던 코드와 상황을 가져간다. 만약 문지기가 동물들을 쫓아내기 전에 무엇인가 할 행동이 추가되었다고 생각해보자. 그렇다면 코드는 다음과 같이 작성할 수 있을 것이다. DoorMan public class DoorMan { public void 쫓아내(Animal a){ System.out.println("안녕 ㅎㅎ"); System.out.println(a.getName() + " 쫓아내"); } } 할 행동이 잘 출력되는 것을 확인할 수 있다. 하지만, 이는 SOLID 원칙의 O(OCP - 개방 페쇄 원칙)에 위배된다. 당연하다. 기존에 있던 DoorMan을 수정했기 때문이다. 그렇기에 SOLID 원칙에..
[Design Pattern] 전략 패턴
·
Design Pattern
전략 패턴은 디자인 패턴의 꽃이라고 불리우는 패턴이다. 전략 패턴을 제대로 적용하지 않으면 다른 모든 디자인 패턴들이 의미가 없을 정도로 중요하다고 한다. 코드로 살펴보기 전에 이해를 돕기 위한 그림은 다음과 같다. 문지기가 성의 입구에서 들어오는 무언가를 관리한다고 하자. 이때, 맨처음에는 쥐만을 쫓아내라고 명령을 내렸다가 다음에는 호랑이 등으로 추가될 때 마다 명령을 새로 줘야한다. 이는 문지기 입장에서 복잡한 상황이 될 것이다. 예를 들어 64 종류의 동물들을 쫓아내라고 한다면 문지기는 이걸 다 기억해야 한다. 결국 동물로 추상화하여 명령을 주는 것이 전략 패턴이라고 생각하면 된다. 코드 예시 Mouse public class Mouse{ private String name = "쥐"; public..
SOLID란?
·
Design Pattern
SOLID란 무엇일까? 흔히 객체지향적 설계를 얘기할 때 SOLID 원칙을 설명을 한다. 하지만, 이 원칙을 지키면 좋다는 것이지 위배했다고 무조건 최악의 코드가 되는 것은 아니다. 한번 SOLID의 요소에 대해 하나하나 알아보자. 1. S(SRP - Single Responsibility Principal - 단일 책임의 원칙) SRP - Object - Class가 하나의 책임만을 가져야 함 예를 들어 아래와 같은 Add Class가 있다고 했을 때 여기에 곱하기 나누기를 넣으면 단일 책임의 원칙이 위배된다. public class Add{ public int add(int a, int b){ return a + b; } public static void main(String[] args){ Syst..