🌿 가상화 가상화란? 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공한다 ♪ 하이퍼바이저 (VMM - virtual Machine Manager) 가상화를 하기 위해 필요한 매니저를 지칭한다. 다수의 운영체제를 동시에 실행하기 위한 논리적 플랫폼을 뜻한다 type 1 - Native or Bare-metal type 2 = Hosted 🌿 컨테이너 가상화 OS Virtualization ( OS 가상화 ) Host OS 위에 Guest OS 전체를 가상화한다 VMWare, VirtualBox 자유도가 높으나 시스템에 부하가 많고 느려진다 Container Virtualization ( 컨테이너 가상화 ) Host OS 가 가진 리소스를 적게 사용하며, 필요한 프로세스를 실..
🍂 들어가기에 앞서 micrometer와 metric 들어가기에 앞서 마이크로미터와 메트릭이 무엇인지 알아보자 밑에 블로그에 가볍게 정리해두었다. https://latewalk.tistory.com/220 👨👧👦 micrometer 와 metric 🌲 Micrometer 서비스를 운영할 때 어플리케이션은 수많은 지표들을 확인해야한다. 이런것을 확인하기 위해 모니터링을 하게 되는데 우리가 실제로 정리되어 있는 내용을 화면(대시보드)를 통해 latewalk.tistory.com 🍂 Micrometer 구현 라이브러리 추가 micrometer-registry-prometheus 의존성을 추가해준다 이는 ApiGateway, userservice, orderservice 모두 추가해주어야 한다 Metrics..
🌲 Micrometer 서비스를 운영할 때 어플리케이션은 수많은 지표들을 확인해야한다. 이런것을 확인하기 위해 모니터링을 하게 되는데 우리가 실제로 정리되어 있는 내용을 화면(대시보드)를 통해 보기 위해 다양한 모니터링 툴을 사용한다. 또한 특정 모니터링을 사용할땐 해당 모니터링 툴에 맞는 포맷에 맞추어 측정하고 전달하는 것이 필요하다. 하지만 우리가 특정 모니터링 툴을 사용하다가 툴이 변경되면 코드를 전체적으로 변경해야하는 문제가 발생한다. 이 문제를 해결해주는 것이 바로 마이크로미터(메트릭 퍼사드)라고 한다 메트릭 퍼사드라고도 불리는 마이크로미터는 어플리케이션의 메트릭(측정지표)을 마이크로미터가 정한 표준 방법으로 모아 제공한다. 즉, 추상화를 통해 구현체를 쉽게 갈아끼울수 있도록 해둔다. 스프링 부..
💼 Microservicer의 분산 추적 ( 추적정보 Tracing ) MSA 환경에서 하나의 요청이 여러 개의 서비스를 호출 할 수 있다는 것을 알 수 있다. 그렇다면 우리가 문제가 발생했을때마다 일일히 모든 서비스를 찾아본다는게 쉽지 않다. 때문에 우리는 요청 정보의 실행 정보와 어떤 과정을 거쳐 어느 서비스로 이동되고 있는지 알아야할 필요성을 느꼈다. 그것이 분산 추적이다. 💼 Zipkin 우리가 분산 추적을 하여 추적을 하면 정보가 남는데 그것을 트레이싱이라고 한다 그렇다면 트레이싱을 어디에 저장을 할 수 있는 서비스가 필요하다 그때 사용하는 것이 바로 Zipkin이다. Twitter에서 사용하는 분산 환경의 Timing 데이터 수집, 추적 시스템 (오픈 소스) Google Drapper 에서 발..
🎩 장애 발생 UserService를 잘 사용하다가 OrderService나 CatalogService에서 장애가 발생하여 데이터를 전달 받지 못하게 된다면 그것은 해당 서비스의 문제가 된다. 하지만 중요한것은 반환값이다. 요청에 의한 응답엔 UserService가 문제가 발생했다고 얘기한다는 말이다. 그렇기 때문에 UserService 혹은 다른 서비스들도 그에 대한 대비가 되어있어야 한다. UserService에서 보이는 getOrders가 문제가 발생하면 다른 메소드를 호출해서 데이터를 처리하여 안정적으로 응답을 해야 한다는 말이다. 그러면 정상적인 응답이 전송될것이다. 하지만 문제가 발생한 Order쪽의 데이터는 정확하지 않게 되면서 우리는 Order서비스가 문제가 발생한 것을 알 수 있고 Use..
이전에 배웠던 Kafka를 이용해 각각의 서비스의 데이터 변동에 의한 다른 서비스의 데이터베이스가 같이 변경되는 것을 확인해보자 🧶 Order ▶ Catalog orderservice에서 요청된 주문의 수량 정보를 Catalog service에 반영이 된다. orderservice에서 kafka topic으로 메세지를 전송하고 catalogservice에서 kafka topic으로 전송 된 메세지를 받는다 즉 order service 는 producer, catalog service는 consumer 가 되는 것이다. orderservice 가 자신의 테이블에 DB를 변동시키면 kafka에 topic을 통해 변동된 내용을 전달한다. 그럼 해당 topic을 구독하고 있는 catalog service또한 t..
🍀 kafka 의 개요 Scalar 언어로 된 오픈 소스 메세지 브로커 프로젝트이다 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량과 낮은 지연 시간을 지닌 플랫폼을 제공하고 있다. ♪ kafka 를 사용하는 이유 위 사진의 방식의 단점 End - to - End 연결 방식의 아키텍처이다 데이터 연동의 복잡성이 증가한다 (HW, 운영체제, 장애 등) 서로 다른 DB를 사용하면 다른 종류의 DB에 데이터를 전달하는 것은 쉽지 않다. 때문에 확장이 어렵다는 단점이 존재한다. 때문에 모든 시스템으로 데이터를 실시간으로 전송하여 처리하는게 필요했고 또 데이터가 많아지더라도 확장이 용이한 시스템이 필요졌고 그로 인해 Kafka라는 시스템이 도입되었다 Kafka의 등장으로 각각의 DB는 더이상 어떠한 시스템..
🐟 시작하기에 앞서.. 설치에 앞서 굉장히 실패를 많이 하게 되어 다른 사람들은 그렇게 되지 않았으면 하는 마음에 굉장히 꼼꼼히 작성할것이다. 필자는 이미 한 번 진행을 하게 되어 파일이 모두 있다...하지만 최대한 알 수 있도록 노력하여 작성해본다. 환경은 윈도우이며 폴더는 C드라이브에 만들어진 kafka폴더를 이용해서 진행할 예정이다 윈도우의 환경으로 인해 bin/windows 의 경로에서 진행할 것이다. 🐟 Zookeeper 와 Kafka server 우선 connect 설치를 하기 앞서 알아두어야 하는 것은 주키퍼와 카프카서버는 열려있어야 한다는 조건이 있다. 주키퍼와 카프카를 정상적으로 설치했다면 kafka_버전으로 적힌 폴더가 있을 것이다. ※ c/kafka/kafka_버전/bin/window..
🍃 Communication Types Synchronous HTTP communication ( 동기 ) 요청이 들어오면 해당 요청을 처리 할 떄 다른 서비스의 내용이 필요하면 내용을 가져다가 요청을 처리하는 과정을 한 프로세스로 보고 진행 Astnchronous communication over AMQP ( 비동기 ) AMQP 를 사용해서 비동기 방식으로 요청을 메세지 브로커로 전달하고 각 서비스에 들어온 요청을 전달하여 각 서비스가 해당 요청을 처리하면서 하는 비동기 방식으로 사용하는 것 유저서비스가 오더서비스에게 요청할 데이터가 있다면 eureka에 등록된 서비스의 이름을 찾아서 해당 요청을 전달하여 반환받는 방식 랜덤하게 만들어진 포트때문에 같은 서비스로써 여러개가 등록되어 있다면 라운드로빈의 ..
🦴 Encryption 과 Decryption ( 대칭키와 비대칭키 ) Encryption : 일반적인 데이터를 암호화하여 사람이 알아볼 수 없도록 변경하는 작업 Decryption : Encryption 데이터를 원래 데이터로 변경하는 작업 ( 복호화 ) Encryption types Symmetric Encryption ( 대칭 암호화 방식 ) 암호화에 사용된 키와 복호화에 사용한 키가 동일한 것 Asymmetric Encryption ( 비대칭 암호화 방식 ) 암호화를 할 떄 사용하는 키가 private key 와 public key 로 나뉘어있다 암호화할때 한개를 사용하면 복호화할땐 다른 것을 사용해야한다. Java 에서는 내장되어 있는 Java keytool 을 사용해서 우리가 원하는 key 값..