1. 서비스 실행 방법- IntelliJ IDEA- Exported JAR file- Docker Container 2. Docker Network1). Bridge network$ docker network create --driver bridge [브릿지이름]2). Host network - 네트워크를 호스트로 설정하면 호스트의 네트워크 환경을 그대로 사용 - 포트 포워딩 없이 내부 어플리케이션 사용3). None network - 네트워크를 사용하지 않음 - Io 네트워크만 사용, 외부와 단절 4). docker 기본 네트워크 목록$ docker network lsNETWORK ID NAME DRIVER SCOPEb0d1b31fd518 bridge bridge ..
Java
1. 가상화1). 호스트 OS 가상화 - Host OS 위에 Guest OS 전체를 가상화- VMWare, VirtualBox- 자유도가 높으나 시스템에 부하가 많고 느려짐 2). 컨테이너 가상화- Host OS가 가진 리소스를 적게 사용하며 필요한 프로세스 실행- 최소한의 라이브러리와 도구만 포함- Container의 생성 속도 빠름 Container Image : Container 실행에 필요한 설정 값Image만 가지고 있으면 바로 하나의 운영체제나 소프트웨어를 바로 실행할 수 있는 상태 Dockerfile- Docker Image를 생성하기 위한 스크립트 파일- 자체 DSL(Domain-Specific language) 언어 사용 -> 이미지 생성과정 기술 2. Docker Desktop 설치ht..
1. 설명 1). Micrometer- JVM 기반의 애플리케이션의 Metrics 제공- Prometheus 등의 다양한 모니터링 시스템 지원 2). Prometheus- Metrics를 수집하고 모니터링 및 알람에 사용되는 오픈소스- 16년부터 CNCF에서 관리되는 2번째 공식 프로젝트 [1번째는 k8s] - Level DB -> Time Series Database(TSDB)- pull 방식의 구조와 다양한 Metric Exporter 제공- 시계열 DB Metrics 저장 -> 조회 가능(Query) 3). Grafana- 데이터 시각화, 모니터링 및 분석을 위한 오픈소스- 시계열 데이터를 시각화하기 위한 대시보다 제공 2. Micrometer 적용1). 코드user-service, apigat..
1. Resilience4j-CircuitBreaker란? - 장애가 발생하는 서비스에 반복적인 호출이 되지 못하게 차단- 특정 서비스가 정상적으로 동작하지 않을 경우 다른 기능으로 대체 수행 -> 장애 회피 다른 마이크로 서비스에서 오류가 발생했음에도 지금 서비스에서도 오류가 발생하는 경우가 종종 있다문제가 있는 서비스에는 요청을 보내지 않아야 한다.Feign Client에서는 임시로 그 에러를 대신, 우회, 정상적으로 보여지는 다른 데이터를 보여줄 준비를 해야된다.2. 테스트1). 기존 오류 테스트config, 유레카, gateway, user, rabbitmq 기동 2). CircuitBreakerUserServiceImpl.java@Override public UserDto getUse..
마이크로 서비스 유저 서비스처럼 config에서 설정파일 받게 수정 1. Orders 서비스와 Catalogs 서비스에 Kafka Topic를 적용- Orders 서비스에 요청된 주문의 수량 정보를 Catalogs 서비스에 반영- Orders 서비스에서 Kafka Topic로 메시지 전송 -> Producer- Catalogs 서비스에서 Kafka Topic에 전송된 메시지 취득 -> Consumer 2. 동기화 코드 [1]order-service -> KafkaProducerConfig.java// 카프카 활성화@EnableKafka// 이 클래스를 설정 파일로 사용, bean을 관리@Configurationpublic class KafkaProducerConfig { @Bean // kaf..
1. Kafka1). Kafka란?실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼 제공- 모든 시스템으로 데이터를 실시간으로 전송하어 처할 수 있는 시스템- 데이터가 많아지더라도 확장이 용이한 시스템- Producer/Consumer 분리- 메시지를 여러 Consumer에게 허용- 높은 처리량을 위한 메시지 최적화 2). Kafka Broker- 실행된 Kafka 애플리케이션 서버- 3대 이상의 Broker Cluster 구성- Zookeeper 연동 - 역할 : 메타데이터(Broker ID, Controller ID 등) 저장 - Controller 정보 저장- n개 Broker 중 1대는 Controller 기능 수행 - Controller 역할 - 각 Br..
FeignClient- REST Call을 추상화 한 Spring Cloud Netflix 라이브러리 1. FeignClient1). 구현OrderServiceClient.java@FeignClient(name = "order-service")public interface OrderServiceClient { // 다 퍼블릭이라서 따로 적을 필요는 없다 @GetMapping("/order-service/{userId}/orders") List getOrders(@PathVariable String userId);} UserServiceImpl.java @Override public UserDto getUserByUserId(String userId) { UserEnti..
Rest Template 작동방식1. 조회 Rest Template 적용1). user-service -> UserServiceApplication.java 빈 추가@Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); } 2). user-service -> UserServiceImpl.java@Override public UserDto getUserByUserId(String userId) { UserEntity userEntity = userRepository.findAllByUserId(userId); if (userEntity == null) th..
오늘은 대칭키와 비대칭키를 이용한 암/복호화, user-service application.yml의 설정 일부를 config-service으로 옮긴 뒤 config-service의 설정을 사용하게 할 것이다.그리고 설정파일의 정보를 암호화할 것이다1. 암호화의 종류1). Symmetric Encryption (대칭키 : 암호화, 복호화 키가 동일)- Using the same key 2). Asymmetric Encryption (비대칭키 : 암호화, 복호화 키가 다름)- Private and Public Key : 암호화 or 복호화 할 때 Private 키와 Public 키를 사용함(중복 안되게)- Using Java keytool : 자바에서 제공하는 암호화, 복호화 인터페이스 2. 암호화/복호화1..
설정 파일의 값을 변경했을 때 변경된 값을 가져갈 수 있는 방법은 3가지다- 서버 재기동 [패스] 1. Actuator refreshrefresh 어플리케이션의 모니터링과 상태, 변경된 내용을 체크할 수 있는 End Point를 제공하지만어플리케이션의 서버가 여러개, MSA면 refresh를 일일이 수동으로 해야되기 때문에 번거롭다 2. Spring cloud bus- 분산 시스템의 노드(MSA)를 경량 메시지 브로커(Rabbit MQ)와 연결- 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달(Broadcast)Spring Cloud Config Server에 마이크로 서비스가 다 연결되어 있는 상태이다Config Server과 연결되어 있는 Spring Cloud Bus가 마이크로 서비스에다가 ..