본문 바로가기

전체 글

(14)
DevOps - Node-Modules, PnP 그리고 Next.js의 Standalone Node Modules란 https://nodejs.org/api/modules.html#loading-from-node_modules-foldersIf the module identifier passed to require() is not a built-in module, and does not begin with '/', '../', or './', then Node.js starts at the directory of the current module, and adds /node_modules, and attempts to load the module from that location. Node.js will not append node_modules to a path already ending i..
Service Discovery란? Service Discovery란?MSA 와 같은 분산 환경에서 각 서비스들은 IP, Port 기반으로 원격 호출을 한다. 이러한 마이크로 서비스 환경에서는 서비스들이 스케일링 되거나 잦은 배포가 일어나므로 서비스들의 위치(IP, Port)가 변경되는 일이 빈번하다. 그래서 서비스 클라이언트가 서비스를 호출할 때 서비스의 위치를 알아낼 수 있어야하는데, 이때 Service Discovery 시스템을 사용한다. 크게 Client Side Discovery, Server Side Discovery로 나뉜다. 1. Client Side Discovery서비스 클라이언트가 Service Registry에 Query를 통해 Service 위치를 물어보고, 로드밸런싱 알고리즘을 사용하여 서비스를 호출하는 방식이다...
DevOps - USE 메소드와 RED 메소드(Monitoring 방법론) 모니터링 방법론인 USE 메소드와, RED 메소드에 대해 설명하는 글입니다. 인프라 레벨에서 사용하는 USE 메소드, 서비스 레벨에서 사용하는 RED 메소드로 구분하였고 Google SRE Book에 언급되는 Four Golden Signal은 아래에 설명하는 USE 메소드, RED 메소드에 중복되는 부분이 있어 별도 설명은 하지 않았습니다. USE 메소드USE 메소드란 시스템의 성능을 분석하는 방법론으로, 모든 리소스에 대해 utilization(사용량), saturation(포화도), errors(에러)를 모니터링하는 것입니다.아래는 각 항목에 대한 설명과 예시입니다.resource: all physical server functional components (CPUs, disks, busses, ...
DevOps - Incident severity level의 정의 Incident severity level이란 IT 시스템, 서비스, 애플리케이션 또는 인프라에서 발생한 Incident의 심각성을 측정하고 분류하기 위해 사용되는 표준화된 기준입니다. 이에 대한 level과 기준은 조직마다 다르게 정의됩니다.Severity 1정의 : 전체 비즈니스 중단 상황. 주요 서비스나 시스템이 완전히 중단되거나 보안 사고, 데이터 손실이 발생한 경우입니다.사례 :주요 서비스(결제, 인증 등)가 완전히 중단된 경우.클라우드 제공업체의 심각한 문제(Azure, AWS)로 인프라가 완전히 중단된 경우.보안 사고(예: 랜섬웨어, 데이터 유출 등)으로 인해 서비스가 즉각 중단된 경우.중요한 사용자 데이터가 손실되어 비즈니스 운영이 불가능한 경우.Severity 2정의 : 부분적 비즈니스 ..
K8S - 모니터링 개념과 실습(Prometheus, Grafana) 쿠버네티스에서 모니터링이란?모니터링의 변화여러 노드에서 다수의 파드를 관리해야하기 때문에 전통적인 Server-App 구조에 비해 모니터링 대상이 유동적.(1:1 -> 1:N 구조로 변화)Application 상태에 따라 파드가 수시로 삭제/생성 되기 때문에 파드를 유동적으로 감시할 수 있도록 Tag, Label 등을 활용하여 모니터링 필요. 모니터링 방식Push-based 모니터링- 노드에서 모니터링 시스템에 정보 전달- 모니터링 시스템이 전달되는 정보에 대한 조절 불가- App은 Push SDK를 사용하여 모니터링 백엔드에 데이터 전송(SDK가 Push Agent 역할)- SPOF 유발(노드와 파드가 급증하게 되면 모니터링 시스템에 부하 발생) Pull-based 모니터링- Discover Syste..
AKS - Multi Nginx Ingress Controller 설정 이 글에서는 AKS 환경에서 Multi Ingress Controller를 설정하여 운영하는 방법을 다룬다. Multi Ingress Controller란?- 하나의 쿠버네티스 클러스터 안에서 Ingress Controller를 여러 개 사용하여 운영 하는 것 Multi Ingress Controller를 사용하는 이유?- 클러스터 안에 많은 서비스가 운영되는 경우 하나의 인그레스 컨트롤러만 사용하면 처리량, 안정성 부분에서 성능이 떨어질 수 있음. - 서비스별로 네임스페이스를 나누어 배포된 인그레스는 TLS 통신을 위해 인증서를 참조해야함. 인그레스는 본인의 네임스페이스에 할당된 인증서만 참조가 가능. 만약 각 네임스페이스별로 인증서를 배포하게 된다면 관리적인 측면에서 좋지 않음(갱신 작업 등).- 또..
K8S - 쿠버네티스의 Core DNS Core DNS란?쿠버네티스 클러스터 상에서 Pod가 어떤 도메인을 질의할 때 CoreDNS가 네임서버로 사용된다. 쿠버네티스 1.12 버전 이후로 표준으로 채택되어,  kube-system 네임스페이스에 Pod 형태로 띄워져 있다. Pod의 네임서버 확인쿠버네티스 클러스터 상에 배포되어 있는 컨테이너들은 /etc/resolv.conf 파일에 네임서버로 CoreDNS 의 Service인 kube-dns의 ip가 등록되어 있다. - 네임서버 확인테스트 파드에 "cat /etc/resolv.conf" 명령어로 kube-dns의 ip가 네임서버로 등록되어있는 것을 확인할 수 있다. /etc/resolve.conf 파일 내 구성 요소들의 의미는 아래와 같다.search : DNS에 질의할 도메인 주소들을 표시...
DFS와 BFS 이번 글에서는 그래프 탐색 알고리즘인 DFS(Depth-First-Search)과 BFS(Breadth-First-Search)에 대해서 파이썬 예제 코드로 알아볼 것이다. DFS(깊이 우선 탐색) DFS는 깊이 우선 탐색이라고도 하고 깊이를 우선으로 탐색한다. 위 그림처럼 최대한 깊이 내려간 뒤 더이상 내려갈 곳이 없다면 옆으로 이동하는 방식이다. 특징 모든 노드를 방문하고자 할 때 사용됨 BFS에 비해 비교적 간단함 검색 속도는 BFS에 비해 느림 스택이나 재귀함수를 이용하여 구현 BFS(너비 우선 탐색) BFS란 너비 우선 탐색이라고도 하고 깊이보단 너비를 우선적으로 탐색하는 알고리즘이다. 위 그림처럼 최대한 옆으로 이동한 후 더이상 옆으로 갈 수없다면 아래로 내려가서 검색하는 방식이다. 특징 최단..