본문 바로가기

티스토리챌린지21

[Algorithm] 다익스트라(Dijkstra) 알고리즘 다익스트라 알고리즘 다익스트라 알고리즘은 1959년 네덜란드의 컴퓨터 과학자 에츠허르 다익스트라가 개발한 최단 경로 탐색 알고리즘이다.  이 알고리즘은 그래프에서 한 정점에서 다른 모든 정점까지의 최단 거리를 구하는 데 사용되며, 실 생활에 사용되는 예시로는 최단 거리 알고리즘답게 내비게이션 시스템, 네트워크 라우팅 등과 같은 곳에 사용된다.   위 예제는 1번 노드(a)에서 5번 노드(b)로 가는 최단 거리를 구하는 과정을 나타낸 것이다.  기준이 되는 노드에서 방문하지 않은 각 노드 간의 거리를 계산하고, 이를 통하여 가장 낮은 거리로 계산되는 각 노도의 경로를 모두 계산하게 되는 것이다. 예제 아래는 heapq를 활용하여, 위의 예제를 다익스트라 알고리즘을 코드로 구현한 것이다. import hea.. 2024. 11. 27.
[Terraform] Terraform이란 Terraform과 Iac  최근의 Infra Engineer나 Devops Engineer 직무를 보면 하나같이 필요로 하는 기술 스택이 존재한다. 바로 Iac(Infrastructure as code)이다.   과거에는 서버를 구매해서 OS를 설치하고 내부 환경을 세팅하는 등의 수작업을 일일이 했다면, 현재는 다르다. Private Cloud와 Public Cloud를 막론하고 Iac를 활용하여 코드기반의 관리를 하는 경우가 많다.   회사의 규모가 일정 수준 이상이 된다면, 수십 수백 대 이상의 서버를 관리하는 상황이 비일비재하기 때문에, 이를 하나하나 관리해 준다면 관리에 필요한 인력과 비용이 상당히 커질 것이다.   하지만 코드로 관리를 하면서 현재 서버의 상태에 대한 명세를 코드로 쉽게 확인하.. 2024. 11. 26.
[OTEL] OpenTelemetry의 Java Agent에서 FRAME_SIZE_ERROR 발생 문제 발생  쿠버네티스 클러스터에 OTel 오퍼레이터를 설치하고, Collector와 Java  Agent를 구축하는 과정에서 발생한 에러이다.   https://opentelemetry.io/docs/kubernetes/operator/automatic/ Injecting Auto-instrumentationAn implementation of auto-instrumentation using the OpenTelemetry Operator.opentelemetry.io    위 OpenTelemetry 레퍼런스를 참고하여 진행했었고, Operator를 설치 후 CRD를 활용하여 Collector를 설치하였다.   이후 Spring Boot 애플리케이션에 Annotation을 이용해서 Java Agent.. 2024. 11. 25.
[Kubernetes] 한 노드에 동일한 파드 스케줄링 제한 개요 쿠버네티스 클러스터 환경에서 운영을 할 때에는, 생각하지 못한 다양한 상황을 많이 접할 수 있다.  그중 하나는 Deployments의 파드가 재 스케줄될 때, 상황에 따라 하나의 노드에 같은 파드가 두 개 이상 스케줄될 수 있다는 것이다.  이것이 문제가 되는 이유는 Deployments의 Replicas가 2인 경우 하나의 노드에 이 파드가 2개가 생성된다면, 단일 장애 지점(SPOF)이 되어버린다는 것이다.  가용성을 위하여 파드를 2개로 설정을 했음에도, 노드에 장애가 발생하면 가용성을 보장받지 못하는 상황이 되어버린다는 것이다.  물론 쿠버네티스에는, 이를 방지하기 위한 설정이 존재한다. 이제 해당 옵션을 알아볼 것이다.  아래는 replicas가 2인 nginx라는 deployment의 .. 2024. 11. 24.
[OTEL] OpenTelemetry란 OpenTelemetry  OpenTelemetry는 줄여서 OTel이라고도 많이 사용되며, OpenTracing과 OpenCensus라는 두 개의 프로젝트가 합쳐져서 탄생한 프로젝트이다.  다양한 모니터링 시스템과 함께 통합되어 사용되는 오픈소스 중 하나이며 Trace, Metric 및 Log를 수집하는 데 사용된다.  현재는 CNCF에서의 Incubating의 단계에 속해있으나, 많은 벤더사의 지원을 받으며, Shopify, eBay나 Github과 같은 대형 조직에서도 사용되고 있다는 것을 볼 수 있다.   Otel을 지원하는 벤더사는 아래 사이트에서 확인할 수 있는데, 굉장히 많은 업체가 나열되어 있는 것을 확인할 수 있다.  https://opentelemetry.io/ecosystem/vend.. 2024. 11. 23.
[Tempo] Tempo란 마이크로 서비스 아키텍처가 많은 기업에서 채택되어 사용되면서, 그에 따라 아키텍처의 복잡도도 함께 증가되었다.  복잡도로 인하여, 에러나 지연이 발생하면, 정확히 어떤 마이크로 서비스에서 문제가 발생하는지 파악하는 것도 어려워졌다.  이러한 문제를 해결하기 위하여 분산 추적의 필요성이 생겼고, 이번 글에서 소개하는 Tempo가 Grafana Labs에서 개발한 분산 추적 솔루션이다.Grafana Tempo  https://grafana.com/oss/tempo/ Grafana Tempo OSS | Distributed tracing backendIntroduction to Grafana Tempo Grafana Tempo is an open source, easy-to-use, and high-scale.. 2024. 11. 22.