[Spring Cloud] Spring에서 MSA를 구축해보자
·
Spring/Cloud
우리는 Spring에서 지원해주는 프레임워크 중 하나인 Spring Cloud를 활용하여 이전에 살펴본 MSA를 구현해볼 수 있다. Spring Cloud Netflix스프링 클라우드 넷플릭스는 Spring Boot Application에 관한 통합 환경 구성을 지원하는 Netflix의 OSS 서비스이다.OSS: 오픈 소스 소프트웨어 Netflix OSS와 Spring Cloud NetflixNetflix OSS에는 다양한 서비스들이 존재한다.각각에 관해 간략히 알아보자. Eureka : Discovery Server각각의 서비스 인스턴스들이 동적으로 확장, 축소 되더라도 인스턴스의 상태를 하나의 서비스로 관리할 수 있는 서비스Ribbon: Client Side Load Balancer부하 분산을 위한 ..
[Spring] Spring에서 로그를 설정하는 방법
·
Spring/유용한 정보
로그란?컴퓨터의 처리 내용이나 이용 상황을 시간의 흐름에 따라 기록개인용 컴퓨터 통신에서 통신 내용의 기록, 그 파일을 로그 파일통나무 목선 log on(승선), log out(하선)으로 유래목적시스템 보안이나 유지보수 목적사고가 발생했을 때 데이터의 복원이나 사고 원인의 규명에 도움해킹 등의 사건이 발생했을 때, 로그 파일을 분석하여 사건의 원인 파악로그를 설정하기에 앞서 로그는 로그 레벨로 나누어져 있다.먼저, 로그 레벨에 관해 간단하게 알아보자.로그 레벨이란?로그 레벨은 로그 메시지의 중요도를 나타내는 수준을 의미로그 레벨은 로깅 시스템에서 사용되며, 로그 메시지의 중요도에 따라 해당 메시지를 기록할지 결정로그 레벨TRACE가장 상세한 로그 레벨로, 애플리케이션의 실행 흐름과 디버깅 정보를 상세히 ..
[Design Pattern] 싱글톤 패턴
·
Design Pattern
우리가 지금껏 문지기 객체를 여러개 생성할 수 있었다. 하지만, 우리가 이번에 알아볼 싱글톤 패턴을 사용하면 문지기 객체를 한개밖에 사용하지 못한다. 그렇다면 싱글톤 패턴의 장점이 뭘까? 싱글톤 패턴의 장점 싱글톤 패턴의 사용시 장점은 다음과 같다. 메모리 절약 싱글톤 패턴은 전체 시스템에서 단 하나의 인스턴스만을 생성한다. 따라서, 동일한 리소스나 서비스에 대해 여러 인스턴스를 생성할 필요가 없다. 공유 리소스 접근 용이 싱글톤 리소스는 전역적으로 접근이 가능하다. 따라서, 다양한 부분에서 손쉽게 해당 인스턴스를 공유하고 접근할 수 있다. 인스턴스 제어 생성자가 private으로 설정되어 있다. 따라서, 인스턴스 생성을 엄격하게 제어하여 인스턴스가 무분별하게 생성되는 것을 방지한다. 데이터 일관성 싱글..
[HTTP] GET, POST, PUT, PATCH에 대해 알아보자
·
CS/Network
우선, HTTP Method는 REST API와 아주 관련이 깊다. 간단하게 REST API는 HTTP URI로 리소스를 명시하고 HTTP Method를 이용해 해당 리소스에 관한 CRUD 오퍼레이션을 적용하여 클라이언트/서버 사이의 요청과 응답을 처리한다. HTTP API와 REST API는 거의 유사한 의미로 사용된다. 하지만, HTTP는 좀 더 넓은 의미로 사용되며 REST는 HTTP(웹)의 장점을 최대한 활용할 수 있는 아키텍처로 HTTP API에 제약조건이 추가되어있는 형태라고 생각하면 된다. HTTP Method의 종류는 총 9가지이며 GET, POST, PUT, PATCH는 비교적 많이 사용되는 메소드들이다. HTTP Method: GET, POST, PUT, PATCH, DELETE, HE..
Spring Cloud 무중단 배포 성공
·
개발 기록
Spring Cloud, 도커 컴포즈를 활용한 무중단 배포를 구상해보고 동작시켜봤는데 성공하였다. 가상머신에서 작업을 했고 새로운 버전의 도커 컴포즈의 이미지 태그 처리는 아마 CI 도구에서 환경변수를 직접적으로 넣는 방법으로 처리를 해야할 것 같다. 블루-그린 배포보다는 롤링 배포에 가까운 방식인 것 같다. (재정 문제로 서버는 최대한 작게 띄워야 하기 때문에 좀 더 적합한 방법을 찾다보니 롤링 배포) 대략적인 순서는 코드 수정 되었을시 CI Service Temp 컨테이너 구동(즉, 서버 2개 실행 중) 기존 서비스 도커 컴포즈로 업데이트 이때, API Gateway 내에서 설정해둔 Retry Filter가 작동 Service Temp만 작동되다가 기존 서비스 Service Discovery 인식 S..
[Design Pattern] 어댑터 패턴
·
Design Pattern
이번에 다뤄볼 디자인 패턴은 어댑터 패턴이다. 어댑터 패턴을 사용해볼만한 경우는 크게 두 가지이다. 외부 요소를 기존 시스템에 재사용하고 싶지만 아직 만들어지지 않은 경우 외부 요소를 기존 시스템에 재사용하고 싶지만 호환되지 않은 경우 이렇게 두 경우에 사용할만하다. 또한, 레거시 코드에서도 활용이 가능하다. 코드와 함께 알아보자. OuterTiger // 예전에 만들어진 레거시 코드 or 외부에서 만든 라이브러리 // OuterTiger 코드를 수정하면 OCP 원칙 위반 public class OuterTiger { private String fullName = "호랑이"; public String getFullName() { return fullName; } } OuterTiger라는 레거시 코드 또..