2024/06 32

[Spring] Eureka Server (Discovery Server) 생성

Eureka란?Eureka는 Neflix에서 제공한 MSA를 위한 클라우드 오픈 소스이다.Eureka는 Load Balancer와 Middle-tier server에 에러 대응을 위한 Rest 기반 서비스이다.로드 밸런서에 연결 정보 등록에 대한 문제점과 에러 처리를 유연하게 처리하기 위한 기술이다.Eureka는 등록과 해지를 곧바로 적용할 수 있게 도와줍니다. - Discovery : 다른 서비스의 연결 정보를 찾는 것이다.- Registry : 서비스의 연결 정보를 등록하는 것이다.- Eureka 구성  - Eureka Server : Eureka Client를 관리하는 서버이다.  - Eureka Client : 각각의 서비스에 해당하는 모듈이라고 생각하면 됩니다.  실제 흐름 예시로1. Eurek..

[Spring] MSA(MicroService Architecture) 란?

마이크로서비스 아키텍처 (MSA) 란?마이크로서비스 아키텍처(MSA)는 소프트웨어 애플리케이션을 여러 개의 작은, 독립적으로 배포 가능한 서비스로 구성하는 소프트웨어 개발 접근 방식입니다. 이 아키텍처는 최근 몇 년간 소프트웨어 개발에서 큰 인기를 얻고 있으며, 특히 대규모 시스템의 유연성, 확장성 및 유지보수성을 향상시키는 데 유용합니다. 특징느슨한 결합도 : MSA는 느슨하게 결합되어 있어, 각 서비스가 독립적으로 동작하고, 다른 서비스에 최소한의 영향을 미칩니다.독립적 배포 : 각 서비스는 독립적으로 배포될 수 있어, 시스템의 일부분만 수정하고 배포할 수 있습니다.특정 기능 수행 : 각 서비스는 특정 기능을 수행하도록 설계되어, 단일 책임 원칙(Single Responsibility Principl..

[항해 취업 리부트 코스] 개인프로젝트 1주차 WIL

이번 주 항해 취업 리부트코스에서 내가 구현한 기능은 무엇인가요?회원 관리 기능회원가입개인정보 암호화로그인 및 로그아웃 기능JWT 토큰 활용상품 관리 기능상품 리스트 및 상세 정보 조회해당 기능을 구현하기 위해, 어떤 기술적 의사결정을 거쳤나요?고민한 기술의 종류들에는 무엇이 있나요?JAVA 17버전 선택8, 17, 11 버전을 사용을 많이 하고 있고, 8과 17을 사용하는 점유율이 비슷하였고,스프링 부트 3.xx 버전 부터는 Java 17 이상을 지원한다. Java 21 버전부터 Virtual Threads - 수백만 개의 가벼운 스레드를 지원하여 높은 동시성을 효율적으로 처리해주는 기능 안정성과 검증된 기능과 성능을 제공하는 17버전 DB 선택MySQL의 장점:성능: 일반적으로 빠른 속도를 보장하며..

[백준] 2501번 : 약수 구하기 - Java

문제https://www.acmicpc.net/problem/2501자연수 N과 K가 주어졌을 때, N의 약수들 중에서 K번째로 작은 수를 구하는 문제입니다. 만약 K번째 약수가 존재하지 않는다면 0을 출력합니다.접근 방법1. 주어진 N의 약수를 찾습니다.2. 약수들을 리스트에 저장합니다.3. 리스트를 오름차순으로 정렬하여 K번째 약수를 출력 or 작다면 0을 출력코드import java.io.*;import java.util.ArrayList;import java.util.Collections;import java.util.StringTokenizer;public class Main { public static void main(String[] args) throws IOException { ..

[백준] 1251번 : 단어 나누기 - Java

문제https://www.acmicpc.net/problem/1251주어진 문자열을 세 부분으로 나누고, 각 부분을 뒤집은 후 합친 문자열 중에서 사전순으로 가장 앞서는 문자열을 찾는 문제입니다.접근 방법문자를 입력 받고, 세 부분으로 문자를 나누어 각 부분을 뒤집고, 뒤집은 세 단어를 합쳐 출력구현문자열 합치기:뒤집은 세 부분을 합쳐 새로운 문자열을 만듭니다.이 문자열을 리스트에 추가합니다.사전순 비교와 출력:모든 가능한 문자열을 리스트에 추가한 후, Collections.sort()를 사용하여 사전순으로 정렬합니다.정렬된 리스트의 첫 번째 요소를 출력합니다.코드import java.io.BufferedReader;import java.io.IOException;import java.io.InputSt..

MySQL transaction_isolation 문제

에러 상황java.sql.SQLException: Unknown system variable 'transaction_isolation’MySQL 데이터베이스에서 JDBC 연결 시에 발생할 수 있는 문제 MySQL 5.7.20 이후 버전을 사용하면 tx_isolation 대신 transaction_isolation가 존재해야 한다고 합니다. show variables like 'transaction_isolation'; 쿼리를 통해 MySQL 서버에서 해당 변수를 확인해 보았으나 결과가 표시되지 않았고, 해결 방법spring.datasource.hikari.transaction-isolation 속성을 추가하여 문제를 해결할 수 있었습니다. 특히, 다음과 같이 명시적으로 TRANSACTION_REPEATA..

[백준] 18352번 : 특정 거리의 도시 찾기 - Java

문제https://www.acmicpc.net/problem/18352주어진 그래프에서 특정 도시 X로부터 출발하여, 정확히 K 만큼 떨어져 있는 모든 도시를 찾는 문제입니다. 도시의 개수 N, 도로의 개수 M, 거리 정보 K, 출발 도시 X가 주어지며, 각 도로는 단방향입니다. 도시를 정확히 K만큼 이동하여 도달할 수 있는 도시들을 출력하고, 만약 그런 도시가 없다면 -1을 출력합니다.접근 방법문제는 그래프 탐색 문제로, 너비 우선 탐색(BFS)을 사용하여 해결할 수 있습니다. BFS는 모든 간선의 가중치가 동일한 상황에서 최단 거리를 찾는데 효과적입니다. 우리는 BFS를 사용하여 출발 도시 X로부터 모든 도시까지의 최단 거리를 구하고, 이 중에서 거리 K인 도시들을 출력하면 됩니다. 구현그래프 초기화..

[예약구매] API 문서 작성

내용: 각 API의 요청 방식(GET, POST, PUT, DELETE 등), 엔드포인트, 요청 파라미터, 응답 예시 등을 포함합니다.목적: API를 통해 어떤 작업을 할 수 있는지, 어떤 데이터를 주고받을 수 있는지 명확히 설명합니다.기능MethodURLRequestResponse회원가입POST/api/signupemail : Stringpassword : Stringusername : Stringphone : address : 이메일 인증(고민)  email : Stringpassowrd : String인증번호로그인POST/api/login  비밀번호 변경PUT/api/update-passwordpassword : Stringnewpassword : String 프로필 변경PUT/api/update-..

[예약구매] Docker Compose 로컬 개발 환경 구축

Docker Compose: 개인 프로젝트에서부터 팀 협업까지개인 프로젝트를 진행할 때는 Docker까지 사용할 필요가 없다고 생각합니다. 로컬 같은 환경에서만 실행할 것이기 때문에 복잡한 환경 설정을 할 필요가 없기 때문이다. 그러나 팀 프로젝트 같은 여러 사람이 다루는 협업을 할 경우 각자의 환경이 다르기 때문에 코드가 동일하게 실행되도록 보장하는 것이 중요하다. 이때 Docker를 사용하면 다양한 환경에서 동일한 설정을 유지할 수 있어 매우 편리합니다. Docker Compose의 필요성개인 프로젝트라 할지라도 Docker를 이용해 환경을 구축하면 많은 장점이 있다. 하지만 여러 컨테이너를 실행할 때마다 실매번 명령어를 적어주는 것은 상당히 번거로운 작업이 될 수 있습니다. 실행 순서를 틀리거나 명..

[백준] 1193번 : 분수찾기 - Java

문제https://www.acmicpc.net/problem/1193지그재그 순회 방식으로 n번째 분수를 찾는 문제입니다. 분수는 대각선 방향으로 순회하며, 홀수 번째 대각선에서는 오른쪽 위 방향(↗)으로, 짝수 번째 대각선에서는 왼쪽 아래 방향(↙)으로 진행됩니다.접근 방법대각선 번호와 누적 칸 수 계산: n이 속하는 대각선 번호와 해당 대각선까지의 칸의 누적 합을 구합니다.짝수/홀수 대각선 구분: 짝수 대각선인 경우와 홀수 대각선인 경우에 따라 분자와 분모를 계산합니다.구현대각선 번호와 누적 칸 수 계산:crossCount는 현재 대각선 번호를 나타냅니다.square는 해당 대각선까지의 칸의 누적 합을 나타냅니다.n이 square보다 작아질 때까지 대각선 번호를 증가시키고 누적 칸 수를 업데이트합니다..