개발 관련 일지 21

쉽게 시작하는 쿠버네티스 CH4 문제를 통해 배우는 쿠버네티스

쿠버네티스 파드에 문제가 생겼다면 (GKE에서 실습 됨) 파드를 실수로 지웠다면? 파드만 배포된 경우, 문제가 생긴다. 파드는 단일 객체이다. 디플로이먼트 형태로 배포된 파드는 괜찮다. 파드가 지워지게 되면 파드를 다시 만든다. 쿠버네티스가 파드를 대하는 자세 죽을 수도있지.. 라고 생각함. 그리고, 파드 옮길 때 실제로 옮기는게 아니라, 파드를 삭제하고 만든다. kubectl apply -f ~/_Lecture_k8s_starter.kit/ch4/4.1 // 두개의 yaml에 대한 deployment 만든다. kubectl get pods kubectl delete pod del-pod //파드를 지운다. kubectl get pods // 파드가 지워진다. kubectl delete pod del-d..

쉽게 시작하는 쿠버네티스 CH3 쿠버네티스 인사이드

쿠버네티스 이루는 것들 구역을 나누는 네임 스페이스 (Namespace) default, kube-system, metal-system : 호실로 생각하면 된다. 서로의 구역이 나뉘어 져있다. kubectl get pods -n kube-system 네이티브 쿠버네티스 구성 요소 확인 eks에서도 쿠버네티스 구성 노드가 있는 것을 확인할 수 있다. 이는 aks나 gke도 마찬가지이다. 3사에서 차이 많이 있다. 그런 구성 요소들을 보여주지 않는다. 숨겨져 있는 마스터 노드가 관리하고 있다. 쿠버네티스 기본 철학 MSA로 구성되어 있다. 하는 일들이 개별적으로 나뉘어져 있다. API 서버는 움직이지 않는다. 모든 것을 감시만 한다. 모든 상태 값의 중심에 있다. Controller Manager가 파드를 ..

쉽게 시작하는 쿠버네티스 CH2 배포를 통한 쿠버네티스 체험

애플리케이션 배포 (NGINX) 마스터 노드 실제로 마스터 노드에 kubectl 명령어 설치함. 워커 노드에 애플리케이션을 배포 애플리케이션의 단위는 파드이다. 이는 컨테이너의 집합을 말한다. 파드 배포를 실습한다. kubectl run nginx --image=nginx kubectl get pod // 이미지 생성된 것을 확인 kubectl get pod -o wide // ip 확인 curl 172.16.132.1 쿠버네티스 클러스터 외부에서 배포한 파드 접속하기 외부에서 접속하려면 어떻게 해야하지? 호스트 환경에서 172대의 ip로 접속해? ping과 curl 명령어로 확인해 보면, 접속이 불가능한 것을 알 수 있다. 즉, 쿠버네티스 클러스터가 다음과 같은 문에 둘러싸여 있다. 문 통과해야지 외부..

쉽게 시작하는 쿠버네티스 CH1 쿠버네티스 환경 구성

도커 보통 가상화 환경이랑 비교한다. 가상화 환경 : 운영체제를 가상 머신에다가 설치하는 것. 컨테이너 환경 : 하이퍼 바이저를 제외 하고, 운영체제 위에다가 컨테이너들을 올림. 쿠버 네티스 구글의 보그 시스템을 CNCD 재단에다가 기부했다. 쿠버 네티스가 CNCF 에서 관리 되고 있다. 벤더의 종속성이 없다. → 의존성이 생긴다. (Vender-Neutral) 오픈 소스 프로젝트 → 리눅스가 대표적인 시스템. 동일한 형태를 띠는 게 쿠버네티스이다. 배포 종류 관리형 쿠버네티스. : 많은 부분 관리할 필요가 없다. 설치형 쿠버네티스: 랜처나 오픈 쉬프트 → 이미 패키지화 되어있다. (배포용) 구성형 쿠버네티스 : 베어메탈 등 여러 가지 요구사항에 맞지 않고, 자유롭게 요구사항 하고 싶거나 교육용 정도. ..

[우아한테크세미나] Kafka 이벤트 기반 아키텍처 구축

2024.01.08 시청 발단 : 이벤트 기반 아키텍처 왜 사용? 배달 시스템의 복잡도 증가 알림 기능 배달 시간 통계 배달 늦었을 때 쿠폰 기능 배달만 잘 수행하길 바랬지만 요구 사항이 늘어날 수록 복잡도가 커진다. 따라서 해결법으로는 시스템을 분리하자! 이다. 대부분의 기능은 배달과 강한 일관성을 필요로 하지 않는다. 즉, 배달이 변경되었을 때, 관련 기능도 동시에 반영되어야 하는 가가 강한 일관성의 기준이 된다. 통계나, 쿠폰과 같은 개념은 관련 기능이 “언젠가” 반영되면 된다. (= 결과적 일관성) 결과적 일관성 관련 기능이 언젠가 반영되면 된다. 이벤트는 시스템에서 일어난 행위이다. 해결법 → 이벤트 아키텍처를 이용하자! 이벤트 아키텍처 구현법 이벤트는 어떤 정보를 가지고 있어야 할까? 이벤트 ..

[카카오 기출] 호텔 방 배정 풀이

알고리즘 Union-find 풀이 과정 1 ≤ k ≤ 10^12 이하이므로 long 으로 자료형을 설정한다. 주의사항 : 배열 같은 경우, index를 long으로 설정하지 못한다. → Map 자료구조 관리하여야 한다. 어려웠던 점 : parent를 찾을 때 일반적으로 배열을 사용했는데 map 자료구조를 떠올려야 했다. 시간초과 난 부분 맨 처음에 Map을 parent[i] = i 와 같은 식으로 k범위 까지 초기화 시켜줬는데, 시간초과 난다. parent를 계속 갱신 시켜주며, 가장 가까운 호텔을 parent로 다시 갱신한다. 코드 import java.util.*; class Solution { public Map parent = new HashMap(); public long findParent(l..

[백준] 1823 수확 풀이

알고리즘 DP 풀이 과정 n이 최대 2000이므로, 브루트 포스는 안될 것 같다. → 자연스레 DP를 하는 방향으로 갔다. DP는 작은 문제를 → 큰문제로 확장시켜 나가는 방식이다. 즉, 크기를 확장시키는 순서가 있어야 한다. ex) 13152 같은 경우, 양 끝쪽만 빠져나가는 것을 확인 할 수 있었다. 따라서 다음과 같은 점화식을 도출해냈다. BaseCode가 중요한데, start==end 일 경우, 맨 마지막 숫자이므로, dp[start][start] = arr[start] * n이 된다. 이를 코드로 옮기면 다음과 같다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import ..

[백준] 2151 거울설치 풀이

알고리즘 BFS 풀이 과정 조합 개수로 반복 DFS를 돌리면서 해볼까 생각했는데, 이는 N ≤ 10 정도 일때만 통과한다. 지금은 1≤ N ≤ 50 이므로 시간 초과 또는 메모리 초과가 난다. 다른 풀이 방법을 생각했어야 했는데, 한쪽 문을 start 지점으로 정하고, 다른 문을 만날때까지 BFS를 진행한다. PriorityQueue는 거울의 최소 개수로 정렬되게 한다. ! 를 만나면, 방향을 바꿀 수 있다. 즉 90도 방향을 바꾸고 PriorityQueue에다가 넣어준다. ‘*’ 를 만나면 벽이므로 이동할 수 없다. 그 외 다른 것들은 방향을 직진해서 갈 수 있다. 이를 코드에 옮겼고, 다음과 같이 같다. 트러블 슈팅 원래는 코드를 다음과 같이 짰었다. 이 조건을 통해 90도 체크가 되는 지 확인했었다..

[백준] 2255 합분해 풀이

알고리즘 다이나믹 프로그래밍 풀이 방법 dp[i][j] = 현재 합은 i이고, k개의 수가 남았을 때 경우의 수. ex) dp[20][2]일때, dp[20][2] = dp[20][1] + dp[19][1] + dp[18][1] + … 로 표현할 수 있다. 해당 식을 일반화 한다면, dp[i][j] = dp[i-j][k-1] ( 0≤ j ≤ i ) 이다. dp의 base 식은 dp[0][0] = 1이다. 0을 만들기 위해서 남은 수가 없을 때 경우의 수는 1가지이기 때문이다. 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; ..