728x90
반응형

분류 전체보기 104

[MSA 구축하기] 1. 마이크로서비스 생성하기

🔊 우리는 Spring Cloud를 활용하여 MSA를 구축한다. 🔊 이번에는, 마이크로서비스를 생성할 것이다. 마이크로서비스는 user, beverage, community 3개의 서비스로 구성한다. user-service beverage-service community-service ⭐ 웹 프로젝트를 생성할 때 필요한 의존성에 대해 알아보자. 1. Lombok lombok 은 Java 라이브러리 중 하나로 Java 개발 시에 반복적으로 구현되는 getter, setter, toString 등을 자동으로 생성해 주어 코드를 간결하게 유지하고 생산성을 높여주는 라이브러리이다. 어노테이션을 기반으로 동작하며, 클래스에 어노테이션을 추가하여 컴파일 과정에서 실제 기능이 생성되는 방식으로 동작한다. 즉, 소스코..

[Spring] Spring Initializr로 프로젝트 생성하기

Spring Initializr Spring Initializr 를 사용하면 SpringBoot 기반의 프로젝트를 쉽게 만들 수 있다. https://start.spring.io/ 의 주소로 접근하면 아래와 같은 창이 뜬다. Project SpringBoot를 빌드하고 배포하는 방식을 선택한다. 과거에는 Maven을 많이 사용했지만 최근에는 Gradle을 사용하는 추세이다. Language 프로젝트에 사용할 프로그래밍 언어를 선택한다. SpringBoot SpringBoot 버전을 선택한다. SNAPSHOT은 아직 개발 중인 데모버전이다. M1이나 M2 등은 정식 릴리즈되지 않은 버전이다. 다른 것 없이 버전만 명시되어 있는 것이 정식 릴리즈 된 버전임으로 이들 중에서 선택하면 된다. 높은 버전은 높은 ..

Programming/Spring 2024.03.05

[Architecture] 모놀리식 vs 마이크로서비스 아키텍처

모놀리식 아키텍처와 마이크로 서비스 아키텍처 비교 모놀리식 아키텍처 (Monolithic Architecture) 모놀리식 아키텍처는 전통적인 개발 방식으로 하나의 프로젝트에 모든 기능을 함께 포함한다. 이렇게 하면 코드 베이스가 커질수록 개발 및 배포에 복잡성이 증가한다. 아래는 모놀리식 아키텍처의 예시이다. 모놀리식 아키텍처의 경우 위의 그림과 같이 모듈단위로 쪼개는 것이 아닌 하나의 프로젝트로 전체 애플리케이션을 묶어서 개발하는 방식이다. 이의 경우 회원, 상품, 주문뿐만 아니라 여러 개의 비즈니스 로직이 추가된다면 코드베이스가 커지게 되는 구조이다. 모놀리식 아키텍처의 장단점 1. 장점 초기 개발에 유리하며 빠르게 프로토타입을 개발할 수 있다. 즉, 개발 초기에 단순한 아키텍처 구조로 인해 개발에..

[알고리즘] 크루스칼 알고리즘 (Kruskal Algorithm)

신장 트리 (Spanning Tree) 그래프에서 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프를 의미한다. 모든 노드가 포함되어 서로 연결되면서 사이클이 존재하지 않는다는 조건은 트리의 조건이기도 하다. 신장 트리 사용 목적 모든 노드가 연결되어 있지만 일부 간선을 사용하지 않아도 된다는 점에서 실제 문제 상황에서 효과적으로 사용될 수 있다. 최소 신장 트리 (MST, Minimum Spanning Tree) 최소한의 비용으로 구성되는 신장 트리를 찾아야 할 때 어떻게 해야 할까요? 예를 들어 N개의 도시가 존재하는 상황에서 두 도시 사이에 도로를 놓아 전체 도시가 서로 연결될 수 있게 도로를 설치하는 경우를 생각해 봅시다. 두 도시 A, B를 선택했을 때 A에서 B로 이동하는 경로가 반드..

Algorithm 2023.12.14

[알고리즘] 서로소 집합 (Disjoint Sets) - 사이클 판별

서로소 집합을 활용한 사이클 판별 서로소 집합은 무방향 그래프 내에서의 사이클을 판별할 때 사용할 수 있습니다. 참고로 방향 그래프에서의 사이클 여부는 DFS를 이용하여 판별할 수 있습니다. 1. 사이클 판별 알고리즘 각 간선을 하나씩 확인하며 두 노드의 루트 노드를 확인합니다. 루트 노드가 서로 다르다면 두 노드에 대하여 합집합(Union) 연산을 수행합니다. 루트 노드가 서로 같다면 사이클(Cycle)이 발생한 것입니다. 그래프에 포함되어 있는 모든 간선에 대하여 1번 과정을 반복합니다. 2. 동작 과정 살펴보기 3. 서로소 집합을 활용한 사이클 판별 (코드) 1) 서로소 집합을 활용한 사이클 판별 (Python) # 특정 원소가 속한 집합을 찾기 def find_parent(parent, x): #..

Algorithm 2023.12.10

[알고리즘] 서로소 집합 (Disjoint Sets) - 자료구조

그래프 그래프(Graph)란 노드와 노드 사이에 연결된 간선의 정보를 가지고 있는 자료구조를 의미한다. 서로소 집합 서로소 집합(Disjoint Sets)이란 공통 원소가 없는 두 집합을 의미한다. 서로소 집합 자료구조 서로소 부분 집합들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조이다. 서로소 집합 자료구조는 두 종류의 연산을 지원한다. 합집합(Union): 두 개의 원소가 포함된 집합을 하나의 집합으로 합치는 연산이다. 찾기(Find): 특정한 원소가 속한 집합이 어떤 집합인지 알려주는 연산이다. 서로소 집합 자료구조는 합치기 찾기(Union Find) 자료구조라고 불리기도 한다. 1. 여러 개의 합치기 연산이 주어졌을 때 서로소 집합 자료구조의 동작 과정 합집합(Union) 연산을 확인하여,..

Algorithm 2023.12.09

[백준] 11779 최소비용 구하기 2 (파이썬)

골드 Ⅲ https://www.acmicpc.net/problem/11779 11779번: 최소비용 구하기 2 첫째 줄에 도시의 개수 n(1≤n≤1,000)이 주어지고 둘째 줄에는 버스의 개수 m(1≤m≤100,000)이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스 www.acmicpc.net 📄 문제 n(1≤n≤1,000)개의 도시가 있다. 한 도시에서 출발하여 다른 도시에 도착하는 m(1≤m≤100,000)개의 버스가 있다. 우리는 A번째 도시에서 B번째 도시까지 가는데 드는 버스 비용을 최소화 시키려고 한다. 항상 시작점에서 도착점으로의 경로가 존재한다. A번째 도시에서 B번째 도시 까지 가는데 드는 최소비용과 경로를 출력하여라. 💡 아이디..

[백준] 14938 서강그라운드 (파이썬)

골드 Ⅳ https://www.acmicpc.net/problem/14938 14938번: 서강그라운드 예은이는 요즘 가장 인기가 있는 게임 서강그라운드를 즐기고 있다. 서강그라운드는 여러 지역중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 www.acmicpc.net 📄 문제 서강그라운드는 여러 지역 중 하나의 지역에 낙하산을 타고 낙하하여, 그 지역에 떨어져 있는 아이템들을 이용해 서바이벌을 하는 게임이다. 예은이는 낙하산에서 떨어질 때 각 지역에 아이템들이 몇 개 있는지 알려주는 프로그램을 개발을 하였지만 어디로 낙하해야 자신의 수색 범위 내에서 가장 많은 아이템을 얻을 수 있는지 알 수 없었다. 각 지역은 일정한 길이 l (1 ≤ l ≤ 15)의 길로..

[백준] 14502 연구소 (파이썬)

골드 Ⅳ https://www.acmicpc.net/problem/14502 14502번: 연구소 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 다행히 바이러스는 아직 퍼지지 않았고, 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 연구소는 크 www.acmicpc.net 📄 문제 인체에 치명적인 바이러스를 연구하던 연구소에서 바이러스가 유출되었다. 바이러스의 확산을 막기 위해서 연구소에 벽을 세우려고 한다. 일부 칸은 바이러스가 존재하며, 이 바이러스는 상하좌우로 인접한 빈 칸으로 모두 퍼져나갈 수 있다. 새로 세울 수 있는 벽의 개수는 3개이며, 꼭 3개를 세워야 한다. 연구소는 크기가 N×M인 직사각형으로 나타낼 수 있으며, 직사각형은 1×1 크기의 정사각형으로 ..

[백준] 1504 특정한 최단 경로 (파이썬)

골드 Ⅳ https://www.acmicpc.net/problem/1504 1504번: 특정한 최단 경로 첫째 줄에 정점의 개수 N과 간선의 개수 E가 주어진다. (2 ≤ N ≤ 800, 0 ≤ E ≤ 200,000) 둘째 줄부터 E개의 줄에 걸쳐서 세 개의 정수 a, b, c가 주어지는데, a번 정점에서 b번 정점까지 양방향 길이 존 www.acmicpc.net 📄 문제 방향성이 없는 그래프가 주어진다. 세준이는 1번 정점에서 N번 정점으로 최단 거리로 이동하려고 한다. 또한 세준이는 두 가지 조건을 만족하면서 이동하는 특정한 최단 경로를 구하고 싶은데, 그것은 바로 임의로 주어진 두 정점은 반드시 통과해야 한다는 것이다. 세준이는 한번 이동했던 정점은 물론, 한번 이동했던 간선도 다시 이동할 수 있다..

728x90
반응형