분류 전체보기 1341

도커 설치하기

1. VirtualBox DownLoad https://www.virtualbox.org/wiki/Downloads Downloads – Oracle VM VirtualBox Download VirtualBox Here you will find links to VirtualBox binaries and its source code. VirtualBox binaries By downloading, you agree to the terms and conditions of the respective license. If you're looking for the latest VirtualBox 6.0 packages, see Virt www.virtualbox.org 2. 이미지 불러오기(강의 자료) 3. 터미..

컨테이너, 도커, 쿠버네티스

컨테이너 컨테이너는 가상 환경을 사용해 각 마이크로 서비스를 격리(isolate)하는 기술 컨테이너는 가상머신처럼 하드웨어를 전부 구현하지 않기 때문에 매우 빠른 실행 가능 프로세스의 문제가 발생할 경우 컨테이너 전체를 조정해야 하기 때문에 컨테이너에 하나의 프로세스를 실행하도록 하는 것이 좋다. (브라우저와 비슷!) 컨테이너를 격리하는 기술 리눅스 네임 스페이스: 각 프로세스가 파일 시스템 마운트, 네트워크, 유저(uid), 호스트 네임(uts) 등에 대해 시스템에 독립 뷰를 제공 리눅스 컨트롤 그룹: 프로세스로 소비할 수 있는 리소스 양(CPU, 메모리, I/O, 네트워크 대역대, device 노드 등)을 제한 두 기술을 활용하여 컨테이너 환경을 만들어 줄 수 있다 -> 이를 편하게 제공해 주는 것이..

모놀리식 아키텍처 VS 마이크로 서비스 아키텍처

모놀리식(Monolithic architecture) 아키텍처 전통적인 아키텍처, 기존에 사용하던 서비스 방법 서비스가 하나의 애플리케이션으로 돌아가는 구조 기존의 개발 방식을 사용해 개발하여 간단히 배포 하나의 서비스 또는 어플리케이션이 하나의 거대한 아키텍처 다양한 기능을 동작하는 서비스를 서버에서 실행하여 서비스 단점 모놀리식 서비스 아키텍처를 스케일링하면 기존의 애플리케이션을 그대로 복제하여 로드밸런싱 불필요한 서비스까지 모두 복제 종속적인 라이브러리의 충돌 각각의 기능들은 서로 다른 기능을 제공하여 버전의 종속성을 필요한 경우가 존재 각 기능의 따른 라이브러리를 매 업데이트마다 관리하기 매우 어려움 조금만 수정해도 전체 빌드 및 배포 필요 소스코드 전체가 하나로써 동작하기 작은 수정만 있더라도 ..

Spring Cloud Gateway - Load Balancer

Eureka - SpringCloudGateWay 연동 Pom.xml Eureka Clent를 사용할 것이기 때문에 EurekaClient Dependency를 추가해 준다. FirstService, SecondService도 모두 등록시켜 주어야 한다. application.yml SpringCloudGateway를 Eureka Cilent로 등록시킨다. SpringCloudGateway의 uri를 MSA로 변경하여 준다. lb://MSA이름으로 URI를 변경하여 주면 해당 Gateway가 해당 MSA로 Eureka 서버를 통해 전달받게 된다. 같은 서비스를 여러 번 실행시키기 IntelliJ 종속적 실행 IntelliJ에 종속적으로 다른 Port 번호로 애플리케이션을 실행할 수 있다. 매번 실행 시마..

Spring Cloud Gateway - Logging Filter

GateWayFilter 실제 GateWayFilter는 직접 생성할 수 없고 구현한 OrderedGatewayFilter로 생성할 수 있다. 요청 -> globalFilter -> CustomFilter -> logginFilter -> MicroService LogginFilter @Component @Slf4j public class LoggingFilter extends AbstractGatewayFilterFactory { public LoggingFilter(){ super(Config.class); } @Override public GatewayFilter apply(Config config) { GatewayFilter filter = new OrderedGatewayFilter((exch..

Spring Cloud Gateway - Global Filter

공통적으로 적용시킬 때 사용하는 Filter이다. 가장 처음에 시작이 되고, 가장 마지막에 종료된다 Pre 같은 경우 CustomFilter보다 먼저 실행되고, Post 같은 경우 CustomFilter보다 늦게 종료된다. GlobalFilter @Component @Slf4j public class GlobalFilter extends AbstractGatewayFilterFactory { // 해당 Factory를 구현해야한다. public GlobalFilter(){ super(Config.class); } @Override public GatewayFilter apply(Config config) { return ((exchange, chain) ->{ //Global Pre Filter Serv..

Spring Cloud Gateway - Custom Filter 적용

사용자 정의 필터를 등록할 수 있다. JWT와 같은 해당 토큰이 존재하는지를 체크하여 보안을 적용할 수도 있다. CustomFilter @Component @Slf4j public class CustomFilter extends AbstractGatewayFilterFactory { // 해당 Factory를 구현해야한다. public CustomFilter(){ super(Config.class); } @Override public GatewayFilter apply(Config config) { return ((exchange, chain) ->{ //Custom Pre Filter ServerHttpRequest request = exchange.getRequest(); ServerHttpRespo..

Spring Cloud Gateway - Filter 적용

프로세스 client -> SpringCloudGateway -> MicroService로 전달된다. SpringCloudGateWay 같은 경우 Predicate를 통해 분기 처리를 하고, 사전, 사후 필터 중 어떤 것을 동작시킬지 선택한다. 필터의 경우 .yml파일과 같은 Property 파일로 작성해도 되지만 Java Code로 작성할 수도 있다. 동작 과정 요청 -> SpringCloudGateWay -> Predicate -> PreFilter -> Service -> PostFilter SpringCloudGateway에서 Header를 추가할 수도 있다. JAVA Code를 사용한 Route 등록 Java 코드를 통해 Predicate을 Route를 등록해 줄 수 있다. route를 람다 형..

Spring Cloud Gateway - 프로젝트 생성

Zuul과의 가장 큰 차이는 비동기 방식을 지원한다는 장점이 있다. SpringCloud에서는 Netty라는 비동기 방식을 지원하는 서버를 호출하여 준다. 프로젝트 생성 Lombok, Gateway, EurekaDiscoveryClient 사용 application.yml server: port: 8000 eureka: client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://localhost:8761/eureka spring: application: name: apigateway-service cloud: gateway: routes: #여러개 라우트 등록 - id: first-service uri..