로그란?로그는 프로그램이 어떤 동작을 했는지 기록해두는 것에러가 났을 때 원인을 추적하거나, 정상적으로 동작했는지 확인하는 데 꼭 필요하다. 리눅스 시스템에서는 다음과 같은 명령어로 로그를 확인할 수 있다.systemctl status nginx # 서비스 상태 확인cat /var/log/syslog # 시스템 로그 확인Spring에서의 Logging스프링에서는 Logger를 사용해서 다양한 로그 레벨로 메시지를 기록할 수 있다.log.info("정상"); // 정상일 때log.error("에러"); // 에러일 때// 동작 상황을 모두 출력log.trace("trace : 동작 상황을 모두 출력(메소드 실행, 종료, 반복문 실행 등)");// 동작 상황을 모두 출력log...
CQRS (Command Query Responsibility Segregation)명령(Command)과 조회(Query)를 명확히 분리하는 아키텍처 패턴 Command데이터를 생성(Create), 수정(Update), 삭제(Delete) 하는 작업 Query데이터를 조회(Select)하는 작업 ✅ 장점부하분산조회 요청이 많을 경우, 쿼리 서비스만 스케일업/스케일아웃하면 됨커맨드와 쿼리를 같이 둔 경우, 불필요하게 커맨드 로직도 함께 리소스를 차지장애 분리쿼리에 장애가 발생했을 때도 커맨드는 계속 서비스 가능 CQRS 적용 방법단일 프로젝트 내에서 분리BoardCommandService: 게시글 등록, 수정, 삭제BoardQueryService: 게시글 목록 및 상세 조회 프로젝트를 완전히 분리bo..
3.24 ~ 3.28 드디어 최종 프로젝트 팀이 정해지고 최종 프로젝트를 시작하게 되었따 !! 처음 보는 사람들도 많을 줄 알았는데 맨날 보고 같이 밥도 먹던 친구들과 같은 팀이 됐다. 주변 팀들 구성을 보니까 최대한 친한 사람들과 같이 팀 구성을 하게 해주려고 노력하신 것 같다. 사실 나는 우리 기수에서 얘기를 한 번도 안 해본 분들도 있어서 처음 보는 사람들이 많았으면 좋겠다고 생각했는데.. 이 부분은 아쉬웠지만 그래도 지금 팀 구성도 좋아서 지금 팀원들과 열심히 할 예정이다.이번 주에 진행한 내용이번 주 월요일, 화요일에는 CICD 프로젝트로 진행했다. 저번 주 금요일에 빌드 + 배포에 필요한 yml 파일을 미리 작성해두고 진행했다.월요일에는 팀원들과 회의를 진행하면서 빌드를 어떻게 할지, 배포 ..
3.17 ~ 3.21 강사님께서 알려주시는 이론 수업이 드디어 끝났다...!짧은 기간 안에 너무 많은 정보가 들어와서 정리하기도 힘들고 모든 내용들을 다 습득하기도 어려웠지만그래도 나름 잘 따라갔던 것 같다.이제 최종 프로젝트만 남았다... 배운 내용들을 가득 담아 성공적으로 마무리하고 싶다 !! 이번 주에 배운 내용월요일에는 쿠버네티스와 같은 마이크로서비스 아키텍처에서 서비스 간 통신을 관리하고 제어를 쉽게 해줄 수 있는 istio에 대해서 배우고, MSA 데모 프로젝트를 가지고 실습을 진행하면서 어떻게 istio로 관리하는지를 배웠다.그리고 3계층 아키텍처 배포 실습을 진행했다. 회원 기능의 마이크로서비스를 개발해서 디플로이먼트로 배포하고, DB 서버를 올리고, ConfigMap 등을 작성하고 G..
Eureka란?Spring Cloud Eureka는 넷플릭스에서 개발한 서비스 디스커버리 시스템이다.마이크로서비스 아키텍처(MSA) 환경에서 동적으로 서비스 등록 및 검색을 가능하게 해준다. 서비스 디스커버리란?마이크로서비스 환경에서는 서비스들이 동적으로 변경될 수 있으므로, 각 서비스의 IP 및 포트를 관리하는 중앙 레지스트리가 필요하다. Eureka Server: 서비스들의 정보를 저장하고 관리하는 레지스트리 서버 역할Eureka Client: 유레카 서버에 자신의 정보를 등록하고, 필요할 때 다른 서비스의 정보를 조회 유레카 서버에 등록만 잘 해놓으면 다른 서버의 IP를 알 필요가 없다 => 필요할 때 유레카 서버에서 받아가면 된다. 서버가 아무리 많아도 각자의 서비스를 개발하는 개발팀에서 유레카 ..
하나의 프로젝트 안에 여러 개의 프로젝트가 들어갈 수 있게 멀티 모듈 프로젝트를 생성 common, user-api, board-api, gateway가 있는 프로젝트 만들 멀티 모듈 프로젝트 생성모듈 생성프로젝트 우클릭 - New - Module 클릭 모듈 이름을 입력하고 생성한다. 모듈 세 개 추가 settings.gradle 설정프로젝트의 settings.gradle에 생성한 모듈들을 추가해준다.rootProject.name = 'multi'include 'user-api'include 'common'include 'board-api' 필요 없는 파일 삭제 프로젝트의 src는 사용할 일이 없기 떄문에 src 폴더를 삭제해준다. 각각의 모듈에서 필요 없는 파일들은 삭제하고, src 폴더와 bui..
Spring Cloud란?https://spring.io/projects/spring-cloud Spring CloudSpring Cloud provides tools for developers to quickly build some of the common patterns in distributed systems (e.g. configuration management, service discovery, circuit breakers, intelligent routing, micro-proxy, control bus, short lived microservices andspring.io Spring Cloud는 마이크로서비스 아키텍처(MSA)를 구축할 때 필요한 다양한 기능을 제공하는 Spring 프레임..
STOMP란?Single (단순한) Text (텍스트 기반) Oriented Messaging Protocol (메시징 프로토콜)웹 소켓과 함께 사용하는 메시징 프로토콜 기본적으로 웹 소켓은 양방향 통신을 가능하게 하지만,메시지를 어떻게 주고받을지에 대한 형식을 정해주지 않는다. -> STOMP를 사용하면 클라이언트와 서버 간 메시지 형식이 표준화되고,채팅, 알림 시스템, 실시간 데이터 전송 등에 활용 가능Pub-Sub 방식을 사용하여 한 명이 보낸 메시지를 여러 사람이 받을 수 있다. (대표적인 예로 채팅방이 있음) STOMP 특징텍스트 기반 프로토콜HTTP 처럼 간단한 프레임을 사용하여 메시지를 주고받음Pub-Sub(발행-구독) 모델 지원메시지를 특정 채널에 보내면, 해당 채널을 구독한 클라이언트들..