본문 바로가기

전체 글

(92)
[Spring Cloud로 개발하는 마이크로서비스] Section 2: API Gateway Service API Gateway Service API Gateway는 서비스로 전달되는 모든 API 요청의 관문 역할을 한다. 내부 서버 시스템의 아키텍처를 내부로 숨기고 외부의 요청에 대한 적절한 응답을 한다. 즉, 클라이언트가 내부 구조를 알 필요없이 약속한 형태의 API의 통신하는 것이다. API Gateway의 기능 클라이언트의 요청을 일괄적으로 처리 서비스 디스커버리 전체 시스템의 부하를 분산 시키는 로드 밸런서의 역할 동일한 요청에 대한 불필요한 반복 작업을 줄일 수 있는 캐싱 시스템 상을 오고가는 요청과 응답에 대한 모니터링 시스템 내부에 아키텍처를 숨길 수 있음 회로차단기 기능 인증 및 인가 Spring Cloud에서 MSA간 통신 - RestTemplate - Feign Client Netfilx ..
[Spring Cloud로 개발하는 마이크로서비스] Section 1: Service Discovery Spring Cloud Netfilx Eureka 스프링 클라우드 넷플릭스는 '스프링부트 애플리케이션'에 대한 통합 환경 구성을 지원하는 Netfilx OSS 서비스이다. Netfilx OSS의 다양한 서비스 Eureka : Disocovery Server 각각의 서비스 인스턴스들이 동적으로 확장, 축소 되더라도 인스턴스의 상태를 하나의 서비스로 관리할 수 있는 서비스 Ribbon : Client Side Load Balancer 트래픽을 분산시키는 기능 Zuul : API Gateway 각각의 마이크로서비스 종단점을 연결하는 리버스 프록시 Hystrix : Circuit Breaker 특정 서비스가 과부하가 걸려 서비스 장애를 전파하는 특성을 해결하는 기능 이외에도 다양한 서비스를 제공한다. Netfi..
[Spring Cloud로 개발하는 마이크로서비스] Section 0: MicroService와 Spring Cloud 소개 목차 소프트웨어 아키텍처 1990 ~ 2000 : Robust, Distributed 2010 ~ : Resilient / Anti-Fagile, Cloud Native Antifrgile 특징 Auto scaling Microservices Chaos engineering - 불확실한 상황에서도 안정적인 서비스 Continuos deployment - 지속적인 통합과 배포 (테스트, 모니터링,피드백) => Continous Delivery Cloud Native Architecture 확장 가능한 아키텍처 시스템의 수평적 확장에 유연 확장된 서버로 시스템 부하분산, 가용성 보장 (Scale up, Scale out) 시스템 또는, 서비스 애플리케이션 단위의 패키지 (컨테이너 기반 패키지) 클라우드 구축..
[김영한님 강의 정리 - 스프링 MVC 1편] 웹 애플리케이션의 이해 웹 애플리케이션의 이해 쓰레드란..? 자바 메인 메서드를 실행하면 main쓰레드가 실행됨 동시처리가 필요하다면 쓰레드를 추가로 생성 요청이 발생했을 때.. 요청이 쓰레드보다 많다면 일정 시간 이후 '타임아웃'이 발생할 수 있고 문제 해결을 위해 '신규쓰레드'를 생성한다. 하지만 쓰레드 생성에는 단점이 있다. 쓰레드 생성 비용이 비싸다. (CPU, 메모리) 요청마다 생성하면 '응답속도'가 늦어진다. 쓰레드가 많아지면 '컨텍스트 스위칭' 비용이 발생한다. 쓰레드를 무제한으로 생성하다보면 CPU, 메모리 임계점을 넘어 서버가 죽는다. WAS는 이를 어떻게 해결했을까..? 쓰레드풀 활용 쓰레드 풀에 쓰레드를 미리 생성해두고 쓰레드를 사용하고 반납하고 형태로 사용한다. ⇒ 동시요청허용갯수를 정해둔 것과 같다. (..
[자바 마스터북] 12장 : 디자인패턴 즐기기 - 행동 객체의 '행동'에 대한 디자인 패턴 1. Command 2. Strategy 3. Iterator 4. Observer 12.4.1 Command 패턴 - '명령'을 인스턴스로 취급하여 처리 조합을 쉽게 한다. 처리 내용이 비슷한 명령을 패턴에 따라 구분하거나 실행하는 처리가 필요할 수 있다. 예를 들어 계절에 따라 바뀌는 할인율 적용이 있을 수 있다. Command 패턴은 '명령' 자체를 인스턴스로 취급해 처리의 조합을 용이하게 하는 패턴이다. Book.java public class Book { private double amount; public Book(double amount) { this.amount = amount; } public double getAmount() { return amoun..
[자바 마스터북] 12장 : 디자인패턴 즐기기 - 구조 12.3 구조에 관한 패턴 12.3.1 Adapter 패턴 - 인터페이스에 `호환성이 없는 클래스`들을 조합시키기 기존 시스템을 재사용하여 새로운 시스템을 사용한다고 가정해보자. 이때 새로운 시스템은 지금까지 사용하던 메서드와는 다른 인터페이스를 가지고 있다. 이 경우에는 기존 시스템에 손을 대서 수정을 하게 되면 엄청난 변화를 강요하게 된다. 이 문제를 해결하기 위한 '수단'이 Adapter 패턴이다. 이 패턴은 '인터페이스'에 호환성이 없는 클래스들을 조합시키는 것을 목적으로 하여 기존 시스템과 새로운 시스템의 인터페이스를 흡수하는 Adapter를 제공하여 '적은 변경으로 기존 시스템을 새로운 시스템에 적용할 수 있도록' 한다. Adapter 패턴은 두 가지 방법이 있다. 1. 상속을 이용하는 방법 ..
[자바 마스터북] 12장 디자인패턴 즐기기 - 생성 12.1 디자인 패턴의 기본 12.1.1 디자인 패턴이란? 우리가 프로그램을 작성할 때 완성되는 것은 '목적'과 '개발자'에 따라 천차만별이다. 그러나 이를 각각의 부품단위로 살펴보면 프로그램마다 비슷한 부분이 존재한다. 예를 들어, '어떤 상태가 바뀌었을 때 반응하는 클래스군 만들기' '다른 팀이 만든 부품과의 중개를 하는 클래스 만들기', '재귀적인 구조를 클래스로 표현하기'와 같은 것들이 있다. 이런 비슷한 목적에 대해 클래스 구조의 모범사례를 패턴으로 정리한 것이 디자인 패턴이다. 이 중 가장 유명한 것이 'GoF 디자인 패턴'이며 객체지향 프로그래밍에 도움이되는 디자인 패턴 23가지를 소개한다. 23종류의 패턴은 크게 3가지로 분류되어 있다. 객체의 '생성'에 관한 패턴 프로그램의 '구조'에 관..
[자바 마스터북] 10장 객체지향 즐기기 10.1 기본형과 참조형의 값 전달하기 10.1.1 기본형과 참조형의 값 전달 방법 기본형으로 값을 전달하는 경우에는 수신자에서 값을 변경해도 호출자에 영향을 주지 못한다. 하지만 참조형의 값 전달을 하면 수신자 안에서 변경된 값이 호출에 반영된다. "참조형"의 경우는 객체 자체의 값을 복사해서 넘기는 것이 아닌 '참조'를 나타내는 값을 전달하기 때문이다. 따라서 호출된 메서드의 변경 사항이 호출자에게 반영된다. 따라서, 인수에 객체를 전달했을 때는 메서드 안에서 값이 변하는지에 대한 여부를 명확히 해야만 한다. 책의 저자는 이를 위해 규칙을 정해두었다. 원칙적으로 인수 객체의 수정은 피한다. 반환값이 void인 경우 인수객체를 수정해도 좋다. 반환값이 void 이외의 경우 인수 객체를 변경해서는 안된다..

반응형