MSA/MSA 강좌 - 이도원 강사님

🌿 가상화 가상화란? 물리적인 컴퓨터 리소스를 다른 시스템이나 애플리케이션에서 사용할 수 있도록 제공한다 ♪ 하이퍼바이저 (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..
💼 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는 더이상 어떠한 시스템..
🍃 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 값..
💦 Config server 의 중요성 우리는 처음부터 각각의 서비스 설정 정보를 yml 파일을 통해 저장해두었다. 하지만 만약 설정 파일이 변경된다면 서비스 를 다시 빌드하고 배포해야 한다는 단점이 존재했다. 또한 그 설정파일이 모든 서비스에 동일하게 적용되야 하는 값이라면 더욱 불편해진다. 그래서 설정파일 정보를 외부에 설정을 하게 됨으로써 서비스를 더욱 유연하게 운영할 수 있게 된것이다. Spring Cloud Config 분산 시스템에서 서버 클라이언트 구성에 필요한 설정 정보를 외부 시스템에서 관리한다. 하나의 중앙화된 저장소에서 구성요소 관리가 가능하다 각 서비스를 다시 빌드하지 않고, 바로 적용이 가능하다 어플리케이션 배포 파이프라인을 통해 DEV(개발) - UAT(테스트) - PROD(운영..
🙏 API 명세서와 기능 구현 회원 로그인을 Security를 통해 진행한다. 또한 로그인을 성공하면 토큰과 userId를 반환받을 예정이다. 여기서 userId는 전달하면 안되는데 체크를 위해 가져오는 것이다. 🙏 AuthenticationFilter 추가 ▶ RequestLogin @Data public class RequestLogin { @NotNull(message = "Email cannot be null") @Size(min = 2, message = "Email not be less than two characters") @Email private String email; @NotNull(message = "Password cannot be null") @Size(min = 8, messa..
늦은산책
'MSA/MSA 강좌 - 이도원 강사님' 카테고리의 글 목록