제 프로젝트는 사용자가 특정 차트를 고르면, 코스피 코스닥 전 종목의 과거(5년) 차트들을 모두 탐색하여 가장 유사한 차트 10개 정도를 골라 사용자에게 보여주는 것이 목표입니다.
similar chart finder
내 종목의 차트는 상승하는 차트일까요?
3.35.36.208
오케스트레이션 도구의 이해
Kubernetes는 Docker를 공부하면 항상 같이 언급되는 오케스트레이션 도구인 것 같습니다. 하지만 저는 아직 Kubernetes를 컨테이너를 관리해 주는 툴로만 알고 있습니다.
제 프로젝트에는 특정 시간에 특정 컨테이너를 실행해야 하는 로직이 필요합니다. 지금은 리눅스에 있는 crontab이라는 기능을 사용하고 있지만, 기능이 웹 애플리케이션에 의존하지 않고 리눅스 서버에 의존한다는 단점이 있습니다. 그래서 Kubernetes에도 이와 비슷한 기능이 있지 않을까 공부하려고 합니다.
오케스트레이션 도구란?
오케스트레이션 도구는 애플리케이션의 배포, 관리, 확장 등을 자동화해 주는 도구를 말합니다. 오케스트레이션 도구를 사용하면 개발자는 각각의 서비스나 컴포넌트를 수동으로 관리하는 번거로움에서 벗어나 전체 시스템을 효율적으로 운영할 수 있습니다.
오케스트레이션 도구의 필요성
오케스트레이션 도구는 서비스가 복잡해짐에 따라 점점 더 중요해지고 있습니다. 특히 마이크로서비스 아키텍처에서는 수십, 수백 개의 서비스를 관리해야 하므로, 이를 수동으로 처리하는 것은 매우 비효율적입니다. 오케스트레이션 도구를 사용하면 이러한 서비스들을 쉽게 관리하고, 필요에 따라 자동으로 확장하거나 축소할 수 있습니다.
대표적인 오케스트레이션 도구인 Kubernetes
1. Kubernetes란?
Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화해주는 오픈소스 플랫폼입니다. Google에서 개발되어 현재는 Cloud Native Computing Foundation(CNCF)가 관리하고 있습니다.
Kubernetes의 구성 요소
1. 클러스터
클러스터는 Kubernetes에서 관리하는 노드의 집합입니다. 클러스터 내에서 노드들은 네트워크로 연결되어 있으며, 이를 통해 애플리케이션의 리소스와 서비스를 공유합니다.
3.2. 노드
노드는 Kubernetes에서 작업을 실행하는 기본 작업 단위입니다. 노드는 물리적 또는 가상의 서버일 수 있으며, 각 노드는 컨테이너화된 애플리케이션을 실행하는 데 필요한 서비스를 실행합니다.
3.3. 파드
파드는 하나 이상의 컨테이너 그룹을 포함하는 Kubernetes의 기본 구성 요소입니다. 파드 내의 컨테이너들은 같은 노드에서 실행되며, 동일한 네트워크 네임스페이스와 IPC 네임스페이스를 공유합니다.
Kubernetes의 주요 기능
- 서비스 검색과 로드 밸런싱 : Kubernetes는 DNS 이름이나 자체 IP 주소를 사용하여 서비스를 찾을 수 있습니다. 또한, 로드 밸런서를 사용하여 트래픽을 여러 파드에 분산시킬 수 있습니다.
- 스토리지 오케스트레이션 : Kubernetes는 로컬 스토리지나 공용 클라우드 제공자의 스토리지 시스템 등 다양한 스토리지 시스템을 자동으로 마운트 할 수 있습니다.
- 자동화된 롤아웃과 롤백 : Kubernetes는 애플리케이션의 변경사항이나 확장을 관리하고, 문제가 발생하면 이전 버전으로 롤백합니다. 이는 배포의 안정성을 보장합니다.
- 자동 스케일링 : Kubernetes는 CPU 사용률 등의 메트릭에 기반하여 애플리케이션을 자동으로 스케일링할 수 있습니다. 이는 트래픽 변동에 신속하게 대응할 수 있게 해 줍니다.
- 시크릿과 구성 관리 : Kubernetes는 시크릿과 구성을 객체로 관리함으로써, 애플리케이션 코드에서 분리할 수 있습니다. 이는 보안과 유지관리성을 향상합니다.
- 배치 작업 : Kubernetes는 배치 작업과 크론 작업을 지원합니다. 이를 통해 주기적이거나 일회성 작업을 쉽게 관리할 수 있습니다.
- 셀프힐링 : Kubernetes는 파드, 노드, 컨테이너가 실패하면 자동으로 교체하거나 재시작합니다. 이는 애플리케이션의 내구성을 보장합니다.
- 네트워크 폴리시 : Kubernetes는 파드 간의 네트워크 통신을 제어하는 네트워크 폴리시를 지원합니다. 이를 통해 더욱 세밀한 네트워크 액세스 제어가 가능합니다.
- 네임스페이스 : Kubernetes는 네임스페이스를 이용하여 클러스터 리소스를 논리적으로 분리할 수 있습니다. 이는 다중 팀, 프로젝트 환경에서 효과적으로 리소스를 관리하는 데 도움이 됩니다.
일단 특정 시간에 특정 컨테이너를 실행해야 하는 저에겐 배치 작업이 제일 필요해 보이네요.
4. Kubernetes 사용하기
Kubernetes를 사용하기 위해서는 클러스터를 설정하고, 애플리케이션을 컨테이너 화한 후, 이를 파드에 배포해야 합니다. 이후, 서비스를 통해 파드에 접근하거나, 인그레스를 사용하여 외부 트래픽을 파드로 라우팅 할 수 있습니다.
'웹 아키텍쳐' 카테고리의 다른 글
웹 아키텍처13 - CDN(Content Delivery Network) (23.11.13) (0) | 2024.02.17 |
---|---|
웹 아키텍처12 - 분산 데이터베이스 시스템(MongoDB) MySQL과 뭐가달라? (0) | 2024.02.17 |
웹 아키텍처9 - 컨테이너화/가상화 도구와 Docker (0) | 2024.02.17 |
웹 아키텍처10 - 서버리스 아키텍처와 AWS Lambda (0) | 2024.02.17 |
웹 아키텍처8 - 클라우드 서비스와 AWS(아무것도 모르고있다가 돈 날림) (0) | 2024.02.17 |