전체 글

하나의 프로젝트 안에 여러 개의 프로젝트가 들어갈 수 있게 멀티 모듈 프로젝트를 생성 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(발행-구독) 모델 지원메시지를 특정 채널에 보내면, 해당 채널을 구독한 클라이언트들..
Kafka 라이브러리 추가build.gradle에 추가implementation 'org.springframework.kafka:spring-kafka' Kafka 설정application.yml 설정데이터를 주고받을 때는 같은 데이터 타입으로 주고받아야 한다.string으로 보냈으면 string으로, JSON으로 보냈으면 JSON으로  bootstrap-servers에는 카프카 서버 IP 주소를 적어준다.# String으로 받기spring: kafka: bootstrap-servers: 10.10.10.123:9092 consumer: group-id: psy-group key-deserializer: org.apache.kafka.common.serialization.S..
웹 소켓(Web Socket)이란?웹 소켓(Web Socket)은 클라이언트와 서버 간의 양방향 통신을 지원하는 프로토콜로, HTTP보다 효율적인 실시간 데이터 전송이 가능하다. HTTP는 요청과 응답을 기반으로 한 단방향 통신이지만, 웹 소켓은 연결을 유지하면서 양방향으로 데이터를 주고받을 수 있다. ✅ 웹 소켓의 특징양방향 통신 : 클라이언트와 서버가 실시간으로 데이터를 주고받을 수 있다.지속적인 연결 유지: 최초 handshake 후 지속적인 연결을 유지하면서 데이터 전송 가능낮은 오버헤드: HTTP 요청/응답보다 헤더 크기가 작아 네트워크 부하 감소빠른 응답 속도: 실시간 서비스(채팅, 알림 등) 등에 적합 웹 소켓으로 실시간 채팅 구현하기웹 소켓 라이브러리 추가 build.gradle 파일에 웹..
· CS/Linux
카프카(Kafka)란?분산 이벤트 스트리밍 플랫폼. 주로 대용량의 실시간 로그 데이터를 처리하는 데 사용된다. ✅ 특징분산 시스템 : 여러 브로커(Broker)로 구성되어 장애에 강함고성능, 확장성 : 초당 수백만 개의 메시지를 처리 가능내구성 : 데이터를 디스크에 저장하여 안정적 유지실시간 스트리밍 : 대용량 데이터를 빠르게 처리 ✅ 주요 구성 요소프로듀서 (Producer) : 메시지를 생성하여 카프카로 전송하는 역할컨슈머 (Consumer) : 메시지를 구독하여 가져가는 역할브로커 (Broker) : 카프카 서버로, 메시지를 저장하고 분배하는 역할토픽 (Topic) : 메시지가 저장되는 논리적 분류 단위파티션 (Partition) : 토픽을 나누어 병럴 처리 가능하게 하는 단위컨슈머 그룹 (Cons..
3.10 ~ 3.14 이번 주에 배운 내용이번 주에는 도커 수업이 끝나고 쿠버네티스 수업을 시작했다!근데 이번 주 월요일이 도커 첫 수업이었는데... 하필 전날 저녁 먹고 체를 심하게 해서 속이 안 좋아서 계속 울렁거려가지고 ㅠㅠ 화장실 왔다갔다 하면서 헛구역질하다가 점심에 약 먹고 좀 괜찮아지긴 했는데 머리가 울려서 결국 수업을 제대로 듣지도 못하고 실습도 진행하지 못 했다. 그래서 이틀차부터 수업을 들었는데... 첫날 못 들은 게 좀 크리티컬했다. 수업을 듣는데 이해가 가질 않아서 ㅠㅠ 옆자리 동기한테 계속 물어보면서 실습을 진행했다.도커 네트워크와 쉘 프로그래밍에 대해서 배우고, 도커 컴포즈로 DB master-slave 를 구성하는 실습을 진행했다. 도커 3일차에는 도커 환경에서 디버그하는 방법에..
webimplementation 'org.springframework.boot:spring-boot-starter-web' DB// DBimplementation 'org.springframework.boot:spring-boot-starter-data-jpa'implementation 'org.mariadb.jdbc:mariadb-java-client'  spring securityimplementation 'org.springframework.boot:spring-boot-starter-security'  jwtimplementation 'io.jsonwebtoken:jjwt-api:0.11.5'implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'implementa..
3.4 ~ 3.7이번 주에 배운 내용이번 주에는 수목금이 프로젝트였기 때문에 화요일에 MSA 관련해서 마지막 진도를 나갔다! 서킷 브레이커에 대해서 배우고 실습을 진행했다.요청이 계속 에러가 나면 예외처리를 해서 닫힘 상태로 요청을 받지 않고, 시간이 좀 지나면 다시 열림 상태로 바뀌어서 요청을 받는 등의 실습을 진행했다. SAGA에 대해서도 배웠다.하나의 비즈니스 로직을 처리하는 여러 마이크로 서비스가 있을 때, 모든 서비스가 다 성공하거나 하나가 실패하면 모든 서비스를 실패처리 하는 패턴이다. = 분산된 서비스끼리 트랜잭션 처리하는 패턴이벤트를 발행하는 라이브러리가 따로 있지만, 실습에서는 전에 배웠던 카프카를 사용했다. 상품과 주문으로 실습을 진행했는데, 만약 상품 수량이 40개 남아있을 때 상품 ..
· BE
파이참 환경에 Locust 설치pip install locust   locustfile.py 파일 생성locustfile.py에 테스트하고 싶은 HTTP 요청 URL을 추가한다.from locust import HttpUser, task, betweenclass UserBehavior(HttpUser): wait_time = between(1, 5) # 1~5초 사이 대기 @task def index_page(self): self.client.get("/") # 메인 페이지 요청 @task def about_page(self): self.client.get("/about") # About 페이지 요청  locust 명령어 입력 후 테스트locust..