Service Discovery란?서비스의 위치(IP, PORT) 등 저장 및 관리하는 서비스의 주소록 역할을 한다.서비스를 호출하는 쪽에서 서비스의 위치를 몰라도 요청을 전달할 수 있다. Service-Side Discovert / Client-Side DiscoveryServer-Side Discovery : Service Registry가 아닌 앞단의 Load Balancer를 통해 다른 서비스 호출Client-Side Discovery : Service Registry를 통해 서비스 호출 Eureka Server 구현1. 의존성 추가plugins { id 'java' id 'org.springframework.boot' version '3.3.2' id 'io.spring.depe..
jjuya
Dev Review the RecordMonolithic Architecture란?전통적인 아키텍처, 소프트웨어의 모든 구성요소가 한 프로젝트에 통합되어있는 형태모든 프로세스가 강하게 결합되어있고, 단일 서비스에 실행된다.하나의 DB로 관련 도메인의 테이블을 가지고 데이터를 저장한다. 그렇다 보니 단점이 강하게 드러나게 된다도메인 하나의 장애가 서비스 전체에 영향을 미친다각 도메인의 유지보수가 어렵다빌드. 배포시간이 길어서 생산성이 낮다 이러한 단점들을 극복하기 위해 MAS아키텍처가 등장한다 MSA(Micro Service Architecture)란?하나의 큰 애플리케이션을 여러 개의 작은 서비스 유닛으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍MSA는 여러 도메인 각각의 독립적으로 구성되어 있는 구조이다. 각각의 서비스가 분리되어 있고..
SMTP란?간이 우편 전송 프로토콜(Simple Mail Transfer Protocol)의 약자. 이메일 전송에 사용되는 네트워크 프로토콜이다.인터넷에서 메일 전송에 사용되는 표준입니다. SMTP는 이메일 전송을 위한 표준 프로토콜로, 거의 모든 이메일 시스템과 서버에서 지원된다. 이를 통해 다양한 이메일 클라이언트와 서버 간의 호환성을 보장한다/또한 Spring Boot의 JavaMailSender를 통해 SMTP 서버와의 통합이 용이하며, 이메일 전송 기능을 빠르게 구축할 수 있다. 그래서 회원가입 진행 시 이메일 인증을 진행하기 위해 Google SMTP를 사용하기로했다. Google SMTP 설정 Google 홈페이지 -> Google 계정 관리 (우측 상단)보안 -> 앱 비밀번호앱 비밀번호..
AES란?AES (Advanced Encryption Standard)은 고급 암호화 표준, 암호화 및 복호화 시 동일한 키를 사용하는 대칭 알고리즘입니다높은 안정성과 빠른 속도로 현재 가장 대중적으로 사용되어지고 있는 암호화 알고리즘입니다! AES 종류각각 뒤에 붙은 숫자는 암호화 및 복호화에 사용되는 키의 길이를 의미합니다.AES-128AES-192AES-256 AES-256Secret Key암호화 할 대상인 평문을 암호화하는 데 사용됩니다.이 키는절대로 외부에 노출되면 안 됩니다256bit의 secret key를 사용합니다. Block Cipher(블록 암호)128비트의 고정된 블록 단위로 암호화를 수행합니다.주어진 암호황을 128비트씩 나누어 블록 단위로 암호화를 진행하게 되는데 이렇게 블록 단위..
개인정보는 암호화를 진행하려 한다.패스워드 같은 경우에는 암호화된 정보가 복호화시킬 필요가 없기 때문에 단방향 암호화 알고리즘을 이용하는 PasswordEncoder의 도움을 통해 쉽게 암호화를 진행하였다. 이메일이나, 사용자 이름, 전화번호, 주소등 사용자 개인정보에 해당하는 정보들은 나중에 복호화할 수 있어야 하므로 양방향 알고리즘을 이용해 암호화를 진행하기로 했다 단방향 알고리즘암호화 가능, 복호화 불가능패스워드 암호화시 사용 양방향 알고리즘암호화, 복호화 가능1. 대칭키(비공개키)암호화 복호화시 모두 동일한 키를 사용키를 비공개장점 : 속도가 빠르다단점 : 키를 전달하는 과정에서 노출의 우려가 있음DES, AES2. 비대칭키(공개키)암호화 복호화에 서로 다른 키를 사용하나의 키는 공개키로 사용,..
회원가입POST방식으로 요청 로그인 (인증)로그인 요청을 받은 후 JWT토큰을 생성해서 응답 경로 접근 (인가)JWT Filter를 통해 요청의 헤더에 JWT를 찾아 검증을 하고 일시적 요청에 대한 Sesstion 생성(생성된 세션은 요청이 끝나면 소멸됨 - JWT방식으로 "STATELESS" 상태임) MSA구조로 리팩토링후 JWT토큰 발급 과정user-service에 있던 jwtFilter대신에 API Gateway에서 jwt토큰 검증을 진행해준다.
Docker Compose란?여러 개의 Docker 컨테이너들을 하나의 서비스로 정의, 구성해 하나의 묶음으로 관리할 수 있게 도와주는 툴 Docker compose를 사용해야하는 이유여러 개의 컨테이너를 관리하는데 용이복잡한 명령어로 실행시키던걸 간소화시킬 수 있음$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d mysql위와 같이 복잡하게 실행시키던걸 docker compose를 사용하면 " docker compose up" 명령어만 실행시키면된다! Docker Compose CLI💡아래 명령어는 c..
Dockerfile이란?Docker이미지는 DockerHub에서 다운로드하여 사용할 수 있다.이 이미지는 누군가 만들어서 올려놓은것이다. 그렇다면 이 이미지는 어떻게 만드는 것일까? Dockerfile이라는 걸 활용해서 Docker이미지를 만들 수 있다! 정리하자면, Dockerfile이란 Docker 이미지를 만들게 해주는 파일이다. FROM : 베이스 이미지 생성FROM 란?베이스 이미지를 생성하는 역할Docker 컨테이너를 특정 초기 이미지(베이스 이미지)를 기반으로 추가적인 세팅을 할 수 있다사용법태그명을 사용하지 않으면 latest 버전을 사용# 문법FROM [이미지명]FROM [이미지명]:[태그명] COPY : 파일 복사(이동)COPY란?호스트 컴퓨터에 있는 파일을 복사해 컨테이너로 전달사..
구호물자 11581번 [18일차]시간제한메모리 제한2초256MB문제서기 2050년 엄청나게 강력한 폭풍이 인천을 강타했다. 강력한 폭풍의 영향으로 모든 사람은 대피소로 대피하였으며, 많은 도로가 유실되었다. 그나마 남아있는 도로도 모든 표지판과 가로등이 작동을 멈춰 제대로 된 길을 찾기란 불가능에 가까웠다.이런 심각한 상황에 민지는 대피소에 구명 물자를 보내려고 한다. 서기 2050년 인천의 모든 길은 교차로와 도로만으로 이루어져 있다. 한 교차로와 다른 교차로는 일방통행 도로로 연결되어 있으며, 한 교차로와 여러 교차로가 연결될 수 있다. 그리고 도로에 한번 진입하면 교차로에 도착할 때까지 도로를 벗어날 수 없다.민지는 구호물자로 가득 찬 트럭을 출발시키려고 했지만, 운행을 거부한 트럭운전사들 때문에 ..
숨바꼭질 31697번 [18일차]시간제한메모리 제한2초128MB문제수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다.수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는 프로그램을 작성하시오. 입력첫 번째 줄에 수빈이가 있는 위치 N과 동생이 있는 위치 K가 주어진다. N과 K는 정수이다. 출력수빈이가 동생을 찾는 가장 빠른 시간을 출력한다. 나의코드pac..