본문 바로가기

전체 글117

[Design Pattern] 탬플릿 메서드 패턴 이번 포스팅에서는 디자인 패턴 중 하나인 템플릿 메서드 패턴에 관해 알아본다. 우선, 템플릿 메서드 패턴을 알아보기 위해 App, Teacher 클래스를 생성한다. Teacher public class Teacher { private void 입장하기(){ System.out.println("입장하기"); } private void 출석부르기(){ System.out.println("출석부르기"); } private void 퇴장하기(){ System.out.println("퇴장하기"); } public void 수업시작(){ 입장하기(); 출석부르기(); 퇴장하기(); } } App.java public class App { public static void main(String[] args) { Te.. 2024. 3. 28.
[Spring Cloud] Spring에서 MSA를 구축해보자 우리는 Spring에서 지원해주는 프레임워크 중 하나인 Spring Cloud를 활용하여 이전에 살펴본 MSA를 구현해볼 수 있다. Spring Cloud Netflix 스프링 클라우드 넷플릭스는 Spring Boot Application에 관한 통합 환경 구성을 지원하는 Netflix의 OSS 서비스이다. OSS: 오픈 소스 소프트웨어 Netflix OSS와 Spring Cloud Netflix Netflix OSS에는 다양한 서비스들이 존재한다. 각각에 관해 간략히 알아보자. Eureka : Discovery Server 각각의 서비스 인스턴스들이 동적으로 확장, 축소 되더라도 인스턴스의 상태를 하나의 서비스로 관리할 수 있는 서비스 Ribbon: Client Side Load Balancer 부하 .. 2024. 3. 27.
[Spring] Spring에서 로그를 설정하는 방법 로그란? 컴퓨터의 처리 내용이나 이용 상황을 시간의 흐름에 따라 기록 개인용 컴퓨터 통신에서 통신 내용의 기록, 그 파일을 로그 파일 통나무 목선 log on(승선), log out(하선)으로 유래 목적 시스템 보안이나 유지보수 목적 사고가 발생했을 때 데이터의 복원이나 사고 원인의 규명에 도움 해킹 등의 사건이 발생했을 때, 로그 파일을 분석하여 사건의 원인 파악 로그를 설정하기에 앞서 로그는 로그 레벨로 나누어져 있다. 먼저, 로그 레벨에 관해 간단하게 알아보자. 로그 레벨이란? 로그 레벨은 로그 메시지의 중요도를 나타내는 수준을 의미 로그 레벨은 로깅 시스템에서 사용되며, 로그 메시지의 중요도에 따라 해당 메시지를 기록할지 결정 로그 레벨 TRACE 가장 상세한 로그 레벨로, 애플리케이션의 실행 흐.. 2024. 3. 27.
[Design Pattern] 싱글톤 패턴 우리가 지금껏 문지기 객체를 여러개 생성할 수 있었다. 하지만, 우리가 이번에 알아볼 싱글톤 패턴을 사용하면 문지기 객체를 한개밖에 사용하지 못한다. 그렇다면 싱글톤 패턴의 장점이 뭘까? 싱글톤 패턴의 장점 싱글톤 패턴의 사용시 장점은 다음과 같다. 메모리 절약 싱글톤 패턴은 전체 시스템에서 단 하나의 인스턴스만을 생성한다. 따라서, 동일한 리소스나 서비스에 대해 여러 인스턴스를 생성할 필요가 없다. 공유 리소스 접근 용이 싱글톤 리소스는 전역적으로 접근이 가능하다. 따라서, 다양한 부분에서 손쉽게 해당 인스턴스를 공유하고 접근할 수 있다. 인스턴스 제어 생성자가 private으로 설정되어 있다. 따라서, 인스턴스 생성을 엄격하게 제어하여 인스턴스가 무분별하게 생성되는 것을 방지한다. 데이터 일관성 싱글.. 2024. 3. 25.
[HTTP] GET, POST, PUT, PATCH에 대해 알아보자 우선, 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.. 2024. 3. 24.
Spring Cloud 무중단 배포 성공 Spring Cloud, 도커 컴포즈를 활용한 무중단 배포를 구상해보고 동작시켜봤는데 성공하였다. 가상머신에서 작업을 했고 새로운 버전의 도커 컴포즈의 이미지 태그 처리는 아마 CI 도구에서 환경변수를 직접적으로 넣는 방법으로 처리를 해야할 것 같다. 블루-그린 배포보다는 롤링 배포에 가까운 방식인 것 같다. (재정 문제로 서버는 최대한 작게 띄워야 하기 때문에 좀 더 적합한 방법을 찾다보니 롤링 배포) 대략적인 순서는 코드 수정 되었을시 CI Service Temp 컨테이너 구동(즉, 서버 2개 실행 중) 기존 서비스 도커 컴포즈로 업데이트 이때, API Gateway 내에서 설정해둔 Retry Filter가 작동 Service Temp만 작동되다가 기존 서비스 Service Discovery 인식 S.. 2024. 3. 19.
[Design Pattern] 어댑터 패턴 이번에 다뤄볼 디자인 패턴은 어댑터 패턴이다. 어댑터 패턴을 사용해볼만한 경우는 크게 두 가지이다. 외부 요소를 기존 시스템에 재사용하고 싶지만 아직 만들어지지 않은 경우 외부 요소를 기존 시스템에 재사용하고 싶지만 호환되지 않은 경우 이렇게 두 경우에 사용할만하다. 또한, 레거시 코드에서도 활용이 가능하다. 코드와 함께 알아보자. OuterTiger // 예전에 만들어진 레거시 코드 or 외부에서 만든 라이브러리 // OuterTiger 코드를 수정하면 OCP 원칙 위반 public class OuterTiger { private String fullName = "호랑이"; public String getFullName() { return fullName; } } OuterTiger라는 레거시 코드 또.. 2024. 3. 18.
[Nginx] Nginx에 SSL를 적용해보자(SSL 개념) 이번 포스팅에서는 Nginx에 SSL 인증서를 적용해보는 법을 알아보려 한다. 우선 시작하기에 앞서 SSL/TLS는 뭘까? SSL/TLS SSL(Secure Socket Layer) 또는 TLS(Transport Layer Security)은 전송계층 상에서 클라이언트, 서버에 관한 인증 및 데이터 암호화를 수행한다. 즉, 클라이언트와 서버 양단 간 응용계층 및 TCP 전송계층 사이에서 안전한 보안 채널을 형성해주는 역할을 하는 보안용 프로토콜이다. 이 둘은 보통 버전의 차이이며, 보통 SSL이라 통칭한다.(엄밀히 말하면 SSL을 좀 더 정교한게 만든 것이 TLS 라고 한다.) 기본적으로 HTTP/2 프로토콜을 통해 동작한다. 응용계층 및 전송계층 사이에 위치하나 전송계층 보다 응용계층에 밀접하게 동작한.. 2024. 3. 17.