개발 기술 블로그

Pod - Runtime Container

  • App설계 방식에 큰 영향을 끼침
  • 유연한 특성은 지정된 Pod에 애플리케이션을 연결할 필요성 없어짐
  • 클러스터네 어디서나 Pod가 원활하게 자리 잡을 수 있도록 설계하도록 자리잡음

Pod - Sidecar Container

  • App.Container → 메인기능 만
  • Sidecar → 운영되는데 필요한 추가 기능
    1. Local volume 생성
    1. App.Containr 로그 파일을 volume에 연결
    1. volume로 부터 Sidecar가 로그 수집
  • App.Container는 Application연결에만 집중하게되고 Sidecar를 이용하여 로그 수집 및 표출 또는 외부 로그수집기와 연결하여 모니터링을 가능하게 함

그래프 (Graph)

정점(Vertex or Node)과 이들을 연결하는 간선(Edge or line)으로 구성된 자료구조. 객체 간의 쌍별 관계를 모델링하는 데 사용.

  • 무방향 그래프: 간선에 방향이 없는 그래프 (예: 소셜 네트워크 친구 관계)
  • 방향 그래프: 간선에 방향이 있으며 순서가 쌍으로 표현
  • 가중 그래프: 간선에 거리나 비용과 같은 가중치 부여
  • 연결 그래프: 모든 노드에 대해 항상 경로가 존재
  • 비연결 그래프: 특정 노드가 경로를 가지지 않는 경우
  • 순환 그래프: 시작 노드와 종료 노드가 같은 경우
  • 완전 그래프: 모든 노드가 서로 연결, 간선이 최대한 많은 구조
그래프트리
구조정점과 간선계층적 구조의 그래프 특수 형태
사이클가능없음
연결성비연결 가능항상 연결
간선 수제한 없음n-1
루트노드없음존재
방향성방향 또는 무방향기본적으로 무방향
응용네트워크 모델링, 최단경로DB 인덱스, 파일시스템

너비 우선 탐색(BFS)과 깊이 우선 탐색(DFS)

시작 정점에서 가까운 정점부터 차례로 탐색. 특정 깊이의 모든 정점을 탐색 후 다음 깊이로 이동.

  • Queue(FIFO) 자료구조 사용
  • 최단 경로 탐색에 유용 (가중치 없는 그래프)

동적 계획법 (Dynamic Programming)

입력 크기가 작은 부분 문제들을 해결한 후, 해당 부분 문제를 활용하여 보다 큰 크기의 부분 문제를 해결하고, 최종적으로 전체 문제를 해결하는 알고리즘.

  • 상향식 접근법 — 가장 최하위 해답을 구한 후 이를 저장하고, 해당 결과값을 이용하여 상위 문제를 풀어감
  • Memoization — 이전에 실행했던 값을 저장하여 다음 계산에 사용

점화식: F(n) = F(n-1) + F(n-2)

수열: [1, 1, 2, 3, 5, 8, 13, 21, 34, …]

버블 정렬 (Bubble Sort)

두 인접한 데이터를 비교하여, 큰 값을 뒤로 바꾸는 정렬 알고리즘.

Bubble Sort

  • n개의 리스트가 있을 경우 n-1번의 로직이 필요
  • 로직을 1회 적용할 때마다 가장 큰 수가 뒤에서부터 1개씩 정렬
  • 이미 정렬된 경우 일찍 종료 가능

병합 정렬 (Merge Sort)

재귀용법을 활용한 정렬 알고리즘.

  1. 리스트를 절반으로 자른다
  2. 재귀적으로 하나가 될 때까지 나눈다
  3. 나누어진 리스트를 재귀적으로 합병 정렬한다

Merge Sort

이진 탐색 (Binary Search)

탐색할 자료를 나누어 해당 데이터가 있을 만한 곳을 탐색하는 방법. 둘(binary)로 해석하기보다 양자택일로 해석하는 것이 이해하기 쉽다.

  • 정렬된 상태에서만 사용 가능
  • 리스트의 중간을 선택하여 탐색 값을 비교, 크고 작음에 따라 좌우 선택
  • 재귀를 사용하여 1개가 남을 때까지 반복