Application container와 함께 작동하여 특정 추가기능 또는 로깅및 모니터링 서비스를 구현하는데 이용
Sidecar의 활용은 App.Container로부터 관찰 가능성의 개선과 확장성,보안을 수행함으로 App.Container가 단순하게 주요기능만 작동 할 수 있게 함 → Kubernetes배포성 향상
- App.Container → 메인기능 만
- Sidecar → 운영되는데 필요한 추가 기능
Sidecar Conatiner 예시
- Local volume 생성
- App.Containr 로그 파일을 volume에 연결
- volume로 부터 Sidecar가 로그 수집
- App.Container는 Application연결에만 집중하게되고 Sidecar를 이용하여 로그 수집 및 표출 또는 외부 로그수집기와 연결하여 모니터링을 가능하게 함
그래프 (Graph)
정의
정점(Vertex or Node)과 이들을 연결하는 간선(Edge or line)으로 구성된 자료구조. 객체 간의 쌍별 관계를 모델링하는 데 사용.
종류
- 무방향 그래프: 간선에 방향이 없는 그래프 (예: 소셜 네트워크 친구 관계)
- 방향 그래프: 간선에 방향이 있으며 순서가 쌍으로 표현
- 가중 그래프: 간선에 거리나 비용과 같은 가중치 부여
- 연결 그래프: 모든 노드에 대해 항상 경로가 존재
- 비연결 그래프: 특정 노드가 경로를 가지지 않는 경우
- 순환 그래프: 시작 노드와 종료 노드가 같은 경우
- 완전 그래프: 모든 노드가 서로 연결, 간선이 최대한 많은 구조
그래프 vs 트리
| 그래프 | 트리 | |
|---|---|---|
| 구조 | 정점과 간선 | 계층적 구조의 그래프 특수 형태 |
| 사이클 | 가능 | 없음 |
| 연결성 | 비연결 가능 | 항상 연결 |
| 간선 수 | 제한 없음 | n-1 |
| 루트노드 | 없음 | 존재 |
| 방향성 | 방향 또는 무방향 | 기본적으로 무방향 |
| 응용 | 네트워크 모델링, 최단경로 | DB 인덱스, 파일시스템 |
너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)
BFS (Breadth-First Search, 너비 우선 탐색)
시작 정점에서 가까운 정점부터 차례로 탐색. 특정 깊이의 모든 정점을 탐색 후 다음 깊이로 이동.
- Queue(FIFO) 자료구조 사용
- 최단 경로 탐색에 유용 (가중치 없는 그래프)
동적 계획법 (Dynamic Programming)
정의
입력 크기가 작은 부분 문제들을 해결한 후, 해당 부분 문제를 활용하여 보다 큰 크기의 부분 문제를 해결하고, 최종적으로 전체 문제를 해결하는 알고리즘.
- 상향식 접근법 — 가장 최하위 해답을 구한 후 이를 저장하고, 해당 결과값을 이용하여 상위 문제를 풀어감
- Memoization — 이전에 실행했던 값을 저장하여 다음 계산에 사용
구현 — 피보나치 수열
점화식: F(n) = F(n-1) + F(n-2)
수열: [1, 1, 2, 3, 5, 8, 13, 21, 34, …]
버블 정렬 (Bubble Sort)
두 인접한 데이터를 비교하여, 큰 값을 뒤로 바꾸는 정렬 알고리즘.

동작 방식
- n개의 리스트가 있을 경우 n-1번의 로직이 필요
- 로직을 1회 적용할 때마다 가장 큰 수가 뒤에서부터 1개씩 정렬
- 이미 정렬된 경우 일찍 종료 가능
구현
병합 정렬 (Merge Sort)
재귀용법을 활용한 정렬 알고리즘.
- 리스트를 절반으로 자른다
- 재귀적으로 하나가 될 때까지 나눈다
- 나누어진 리스트를 재귀적으로 합병 정렬한다


