전체 글

스파르타코딩클럽 Spring 단기 심화 2기의 2번째 대규모 AI 시스템 설계 프로젝트는 물류 관리 및 배송 시스템을 위한 MSA 기반 플랫폼입니다. 이에 관련한 21팀 TEAM 낭만의 기획 명세서 정리 블로그입니다. 1. ER 다이어그램 [낭만HUB] 시스템은 총 7개의 서비스, 11개의 테이블로 분리되어 있습니다. user-service· 사용자 (User)· 배송담당자 (Shipper)hub-service· 허브 (Hub)· 허브이동정보 (Route)company-service· 업체 (Company)· 상품 (Product)order-service· 주문 (Order)delivery-service· 배송 (Delivery)· 배송경로 (Track)ai-service· AI (AI)slack-s..
이번 포스팅에서는 Spring Cloud를 이용해 MSA 방식의 서버를 구축할 때, 게이트웨이에서 사용자가 지정한 비율로 특정 서비스를 라우팅하는 방법에 대해 정리하려고 합니다.  가중치 라우팅(Weighted Routing)이란?MSA에서 가중치 라우팅은 트래픽을 여러 마이크로서비스 인스턴스에 지정한 가중치에 따라 분산시키는 기법입니다. 카나리 배포, 블루-그린 배포와 같이 서버의 버전을 나누어야 할 상황에서도 적용될 수 있습니다. 예를 들면, 서비스 A에 70% 서비스 B에 30%의 트래픽을 보내도록 설정할 수 있습니다.  Spring Cloud GatewaySpring Cloud Gateway는 Spring Framework 기반의 API Gateway 솔루션입니다. 주요 기능으로 라우팅, 필터, ..
문제 - n*n 그래프 / h : 사람 수 / m : 비를 피할 수 있는 칸 수- 0 : 이동 가능한 칸 / 1 : 이동 불가능한 칸 (벽) / 2 : 사람 서있는 칸 / 3 : 비를 피할 수 있는 칸- 출력값 : 각 칸마다 사람이 없었던 칸이면 0, 사람이 있었던 칸이면 제일 가까운 비를 피할 수 있는 칸까지의 거리 출력  풀이 방식 def bfs(x, y): que = deque([(x, y, 0)]) visited = [[False] * n for _ in range(n)] visited[x][y] = True while que: x, y, dist = que.popleft() if graph[x][y] == 3: return dis..
문제 바람이 불어오는 방향과 행의 숫자가 주어지고만약 인접한 행의 같은 열에 같은 숫자가 있다면 반대 방향에서 바람을 불어오게 하면 된다.(바람이 분다 = 한 칸씩 밀어낸다)주어진 바람의 정보 수만큼 반복해서 진행한다.   풀이 방식def rotate(row, direction): if direction == 'L': tmp = graph[row][-1] for i in range(m-1, 0, -1): graph[row][i] = graph[row][i-1] graph[row][0] = tmp elif direction == 'R': tmp = graph[row][0] for i in range(m-1): ..
· 💬 Etc.
GitHub Repository 생성 후 첫 파일 업로드 방법 협업하거나 개인적으로 리포지토리를 생성해서 첫 파일 업로드할 때 매 번 하는 방법을 까먹어서 내가 잊지 않기 위해 쓰는 글이다. 1. git 로컬 repository 선언 git init 2. 업로드할 파일 staging area에 추가 (.은 현재 모든 변경 내용을 올린다는 뜻) git add . 3. staging area에 있는 변경 내용을 커밋으로 남기기 git commit -m "message" 4. 현재 branch를 main이라고 명시하기 git branch -m main 5. 내 로컬 repository와 원격 repository 연결 git remote add origin [repositorylink.git] 6. 현재 커밋을..
🧷 무엇을 했고 무엇을 배웠나? 7월 - 스타트캠프 : 오리엔테이션 겸 예비반 사람들과 아이디어톤을 진행하는 시간을 가졌다. 그 외에도 디자인싱킹, 미니자동차 움직이는 알고리즘 만들기, 메타버스에서 코딩하기 등등 신기한 경험도 했다,, 아이디어로 기획하는 건 앱스쿨에서 많이 해봤기 때문에 익숙했고 또 잘 맞는 팀원들을 만나서 재밌게 할 수 있었다! 딱 5일 정도 만났는데 한 학기 내내 반갑게 인사하고 만나서 노는 사이가 되었다 (^^) - Java 기본 : 학부시절에 자바 수업을 듣긴 했지만 정말 훑은 수준이라서 아예 쌩초보 수준이었던 나... 첫 날부터 강사님의 심도 깊은 강의가 아주 인상 깊었다. 자바의 역사부터 객체지향까지..! 이 때는 웹이나 자바에 대한 지식이 전혀 없어서 JVM이나 Servle..
인덱스(Index)란? 데이터베이스에서 테이블의 데이터 조회 시 동작 속도를 높여주는 자료 구조. 북마크처럼 컬럼의 값과 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어서 MYI(MySQL Index) 파일에 저장한다. 사용자는 인덱스를 볼 수 없으며 단지 검색/쿼리의 속도를 높이는 데만 사용된다. Index의 문제점 필요 없는 인덱스를 많이 만들다 보면 배보다 배꼽이 커지는 상황이 발생한다. 전체 테이블에서 찾는 것보다 느려질 수 있음. 따라서 자주 검색할 것만 인덱스를 생성해야 한다. 데이터베이스의 공간을 차지하므로 추가적인 공간 확보가 필요하다. (DB 크기의 10% 정도 추가 공간 필요) 처음 index를 생성하는 데 많은 시간이 소요된다. 데이터 변경 작업이 자주 일어나는 경우 성능 저..
1. Forward와 Redirect의 정의와 구현 Forward : 주로 같은 애플리케이션 내의 다른 서블릿 또는 JSP 페이지로 요청을 전달하는 데 사용되는 기능. 서버 측에서 처리되며, 클라이언트에게 새로운 요청이 생성되지 않는다. public class ForwardServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // Forward할 다른 서블릿 또는 JSP 페이지의 경로를 지정합니다. String forwardPath = "/destination.jsp"; // RequestDisp..
최단 경로 알고리즘 최단 경로 알고리즘은 다음과 같이 경우를 나눠서 사용하는 알고리즘이 다르다. 1. 단일 출발점에서 다른 모든 정점까지의 최단 경로를 구하는 경우 a. Dijkstra's Algorithm (다익스트라 알고리즘): 간선의 양의 가중치만 허용 b. Bellman-Ford Algorithm (벨만-포드 알고리즘): 간선의 양, 음의 가중치 모두 허용 c. BFS : 간선의 가중치가 없는 경우 2. 그래프 내의 모든 정점 쌍 간의 최단 경로를 구하는 경우 a. Floyd-Warshall (플로이드-워셜 알고리즘): 간선의 양, 음의 가중치 모두 허용 b. Johnson's Algorithm (존슨 알고리즘): 간선의 양, 음의 가중치 모두 허용 이 중 이번에는 플로이드-워셜 알고리즘에 대해 ..
요즘 java의 작동 방식에 대해서 배우고 있는데, 생각해보니 swift는 어떤 과정을 통해 빌드가 되고 있고 메모리 영역은 어떻게 나뉘어 있는지, 어떤 머신으로 돌아가고 있는지에 대해서는 모르고 있었다는 것을 깨달았다. 이번 기회에 swift가 돌아가는 과정을 공부해보려고 한다. Swift 프로그램은 Xcode의 빌드 시스템에 의해 처리된다. Xcode Build System이란? Apple의 통합 개발 환경 (IDE)인 Xcode에서 프로젝트를 빌드하고 컴파일하는 데 사용되는 소프트웨어 시스템이다. 빌드 시스템은 코드와 리소스 파일을 완성된 앱으로 변환하는 도구를 관리한다. Xcode에 프로젝트를 빌드하라고 지시하면 빌드 시스템은 파일을 분석하고 프로젝트 설정을 사용하여 수행할 작업 세트를 조합한다...
zxxhe
DEV.BLOG