전체 글

전체 글

    081221 MSA_SpringCloud

    Rabbitmq Rabbitmq를 Docker에서 실행 Rabbitmq 다운로드 사이트에 들어가면 Docker에서 어떻게 써야하는지 명령어가 나와있다. docker run -d --name rabbitmq --network ecommerce-network -p 15672:15672 -p5672:5672\ -p 5671:5671 -p 15671:15671 -p 4369:4369 -e RABBITMQ_DEFAULT_USER=guest\ -e RABBITMQ_DEFAULT_PASS=guest rabbitmq:management -d는 백그라운드에서 실행옵션 --name은 컨테이너 이름지정 옵션 --network는 docker의 어떤 network에서 사용하겠다는 옵션 -p는 포트바인딩해주는 옵션 Rabbitm..

    081121 MSA_SpringCloud

    현재까지 개발한 것들을 Docker에 올려서 Sevice해보자 docker 명령어 ex> mysql docker run -d -p 3306:3306 --name mysql mysql:${version} docker run은 create + start 합쳐놓은것 -d 옵션 : 백그라운드에 실행 -p 옵션 : 포트설정 -p 3306:3306 앞부분포트는 Host에서 접근하고자하는 포트 뒷부분포트는 컨테이너에서 응답하는 포트 --name 옵션 : container의 이름 설정, 설정안하면 임의의 이름 들어감 docker exec -it mysql bash 실행중인 컨테이너에 명령을 실행하거나 shell로 진입하려 사용 Docker Network 사용 docker는 3개의 Network방식 제공 Bridge, ..

    081021 MSA_SpringCloud

    Prometheus, Grafana 설치 https://prometheus.io/download/ Download | Prometheus An open-source monitoring system with a dimensional data model, flexible query language, efficient time series database and modern alerting approach. prometheus.io https://grafana.com/get/?plcmt=top-nav&cta=downloads OS에 맞춰서 다운로드 받고 Grafana는 cloud 말고 self-managed에서 다운로드 받는다. Window기준 Prometheus폴더에서 prometheus.yml에서 내가 s..

    080921 MSA_SpringCloud

    Micrometer - JVM 기반의 Application의 Metrics 제공 - Prometheus등의 다양한 모니터링 시스템지원 Timer - 짧은 지연 시간, 이벤트의 사용빈도를 측정 - 시계열로 이벤트 시간, 호출 빈도 등의 정보를 제공 - @Timed 어노테이션을 메소드에 붙여 사용 MSA에 Micrometer 적용 pom.xml에 Micrometer Dependency 추가 application.yml의 actuator에 info, metrics, prometheus 추가 메소드위에 어노테이션 @Timed Prometheus - Metrics를 수집하여 모니터링 및 알람에 사용되는 Opensource Application - CNCF에서 두번째로 관리하는 프로젝트(첫번째는 k8s) - 시계열..

    080821 MSA_SpringCloud

    Micro Service의 분산 추적 Zipkin - 타이밍 데이터 수집, 추적 시스템 - Google의 Drapper에서 발전 - 분산환경에서 시스템 병목현상 파악 - Collector, Query Service, Database, Web ui로 구성 - Span 하나의 요청에 사용되는 단위 64bit UniqID - Trace 트리구조로 이루어진 Span Set 하나의 요청에 대한 같은 TraceID 발급 SpringCloud Sleuth - Spring Boot APP과 Zipkin과 연동 - 요청 값에 따른 Span ID,Trace ID 부여 - Trace, Span ID를 로그에 추가 가능 Servlet filter, REST Template, Scheduled Actions, Message C..

    080721 MSA_SpringCloud

    주문이 들어오면 Kafka Message 만들어서 전달하자. Message구성 = Schema, Field(DB 정보), Payload(DB 값) --> 만드는 방식에 대해 코드로 올려보자 Service가 Kafka topic에 Message 전달 Kafka Sink Connect가 해당 Message를 쿼리로 DB(MariaDB)에 전달하여 저장하는 형식 MSA 운영중에 다른 Service가 오류가 발생해도 현재 사용하는 Service에서는 문제가 없는 것처럼 보여야한다. CircuitBreaker -> 장애가 발생한 서비스에 반복적인 호출이 되지 않게 장애가 발생시 차단시킴. 장애가 발생한 서비스를 계속 호출하면 서비스가 느려지거나 다른 기능으로 대체수행 되도록 해야함 = 장애회피 CircuitBre..

    080621 MSA SpringCloud

    Order Service에 Kafka 설정 Controller에 kafka Message Producer 작업 두개의 Order Service를 실행 -> Postman으로 주문 API를 전송하여 저장한 뒤 조회하면 두개 Order Service의 DB(MariaDB)에 분산되어 주문이 저장됨 = 각 OrderService가 독립적인 DB를 가지고 있어서 그런것 DB에 바로 저장하는게 아니라 kafka Topic으로 주문 내용을 전송 -> Kafka Sink Connect에서 mariaDB로 전달하도록 수정해서 단일 DB에 저장하도록 수정

    080521 SpringCloud_MSA 공부

    kafka Source Connect추가 localhost:8083/connectors (Postman으로 Post로 전송 아래내용을 JSON형식으로) { "name" : "my-source-connect", "config" : { "connector.class" : "io.confluent.connect.jdbc.JdbcSourceConnector", "connection.url":"jdbc:mysql://localhost:3307/mydb", "connection.user":"root", "connection.password":"${password}", "mode": "incrementing", "incrementing.column.name" : "id", "table.whitelist":"users..

    Window 특정 포트 PID 확인, 프로세스 Kill 명령어

    공부중에 윈도우에서 파워쉘만 종료하면 프로세스가 살아있어 다음에 다시 구동하려하면 포트가 바인딩 되어있어 켜지지않는 문제가 자주 발생해 남긴다. 포트 번호를 검색해서 PID를 찾아 해당 Process를 Kill하는 명령어 netstat -nao | findstr ${port} taskkill /f /pid ${port}

    JPA(Entity, 영속성, 플러시, DB스키마 자동생성)

    JPA를 사용하면 업데이트 쿼리를 commit 전에 알아서 날려줌 EntityManager는 쓰레드간 공유가 되지 않음, JPA의 모든 수정은 트랜잭션안에서 실행됨 JPQL: 객체를 대상으로한 객체지향쿼리, 설정에 따라 각 방언(MySql, MariaDB 등..) 변경해서 검색함 Table이 아닌 Entity 대상으로 검색 (JPQL: Entity 대상 Query, SQL: DBTable 대상 Query) persistence.xml이 있어야 함 JPA 가장 중요한 2가지 1. 객체와 관계형 DB의 맵핑 2. 영속성 컨텍스트(Entity를 영구저장하는 환경, 논리적 개념, Entity Manager를 통해 영속성 Context에 접근) Entity의 생명주기 -비영속 : 객체를 생성, 셋팅한 상태 -영속..