Kubernetes 기본구조
·
기초 지식/K8s
1. Kbuernetes(K8s) 란?MSA에서는 각 서비스가 컨테이너로 패키징되며, 하나의 서비스에 대해 N개의 컨테이너가 존재할 수 있습니다. 수십 개의 서비스만 있어도 수백 개 이상의 컨테이너를 관리해야 합니다.컨테이너 관리에는 다음과 같은 요구 사항이 있습니다:다수의 서버를 하나의 클러스터처럼 사용.여러 서버에 컨테이너를 배포.서비스 디스커버리로 서비스 간 연결.부하에 따른 자동 스케일링(scale-out, scale-in).장애 시 컨테이너 재생성과 트래픽 재연결.서버 상태(헬스 체크) 모니터링.스토리지 및 네트워크 관리.이러한 복잡성을 사람이 수동으로 처리하는 것은 비효율적이며, 이를 자동화하기 위해 컨테이너 오케스트레이션이 필요합니다. Kubernetes(K8s)는 이러한 요구를 충족시키는 ..
Container와 Docker
·
기초 지식/K8s
컨테이너와 도커의 개념 및 역할컨테이너란?컨테이너는 애플리케이션과 그 애플리케이션이 실행되는 환경을 패키지화한 기술입니다. 이를 통해 개발 환경과 운영 환경의 차이로 인한 문제를 방지할 수 있습니다.컨테이너는 가상 머신(VM)과는 다르게, 호스트 OS의 커널을 공유하므로 경량화된 프로세스 격리를 제공합니다.도커란?도커는 컨테이너 기술을 구현한 오픈소스 플랫폼으로, 컨테이너를 생성, 관리, 배포할 수 있는 도구입니다.도커는 애플리케이션 개발, 테스트, 배포를 일관된 방식으로 처리할 수 있도록 지원합니다.컨테이너 이미지를 빌드하고 실행하는 데 필요한 도구를 제공합니다.컨테이너의 특징과 도커를 활용한 애플리케이션 배포컨테이너의 주요 특징격리성: 각 컨테이너는 독립적으로 실행되어 다른 컨테이너나 호스트 시스템과..
MSA 개념
·
기초 지식/MSA
MSA 란?하나의 애플리케이션을 다수의 독립적인 서비스로 구성한 아키텍처입니다.마틴파울러의 블로그에 따르면 MSA 는 다음의 특징을 갖습니다.서비스들은 각자 별도의 프로세스에서 실행된다.HTTP API 와 같은 가벼운 매커니즘으로 통신하는 작은 애플리케이션이다.작은 서비스들은 각자의 비즈니스 기능을 담당하고 완전 자동화 된 절차에 따라 독립적으로 배포된다.각 서비스는 서로 다른 프로그맹 언어, 프레임워크, 데이터 저장 기술을 사용할 수 있다.대표적인 사례로는 Netflix 가 있으며, 국내에는 쿠팡, 배달의 민족 등이 있습니다. MSA 의 어떤 점이 매력적이길래 이들은 MSA 를 도입한 걸까요?MSA 의 장점빠른 Delivery각 서비스는 독립적이므로 코드 수정 영향 범위가 작습니다.결과적으로, 고객에게..
Terraform 기초: depends_on, output
·
탐구 생활/Terraform
Terraform 의존성과 Output 활용지금까지 알아본 Terraform 블록은 resource와 variable이 전부였다. 이번 글에서는 output이라는 유용한 블록을 소개하고, depends_on이라는 argument를 다룬다.1. depends_on여러 리소스를 관리하다 보면 "의존적인 관계"에 있는 리소스들이 존재한다. AWS를 예로 들자면, 특정 VPC에 종속되어야 하는 security group은 VPC 리소스에 의존적일 수밖에 없다.1.1 암시적 의존성Terraform은 리소스 간의 참조 관계를 분석하여 자동으로 의존성을 생성한다. 예를 들어, security group이 특정 VPC의 ID를 참조할 때, Terraform은 이를 기반으로 암시적 의존성을 설정한다.resource "a..
Terraform 기초: 변수와 변수의 활용
·
기초 지식/Terraform
1. Terraform 변수terraform 은 대규모 프로비저닝 관리를 위해 변수 를 지원해준다. 변수는 어떻게 구성되어 있고, 어떻게 사용하는지 알아보자1.1 Terraform 변수의 구성변수는 3개의 argument 로 구성된다.default: 변수의 기본 값을 지정한다.type: 변수의 타입 을 지정한다.description: 변수에 대한 메타데이터를 지정한다.아래와 같이 변수를 만들 수 있다.variable "filename" { default = "pets.txt" type = string description = "name of file"}variable "length" { default = 2 type = number description = "length of ..."}1.2 Terraf..
Terraform 기초: 리소스 만들어보기
·
기초 지식/Terraform
Terraform 실습Terraform 스크립트는 init -> plan -> apply 명령어 순으로 적용하여 리소스를 프로비저닝 할 수 있다.이 순서에 따라서 local device에 txt 파일을 만들어본 후 txt 파일을 업데이트 해보겠다.1. 스크립트 작성Terraform 스크립트는 이전 Terraform:HCL 기본기 에서 살펴본것과 같이 Block 단위로 Resource 와 Argument 를 명시해주면 된다.  나는 terraform-tutorial 이라는 디렉터리를 만들고 그 공간에서 실습을 진행했다.2 terraform initscript 를 적절히 작성한 후 terraform init 을 실행하면 작업공간(terraform-tutorial) 에 .terraform 디렉터리와 .terr..
Terraform 기초: HCL 기본기
·
탐구 생활/Terraform
아무리 HCL 이 쉬운 DSL 이라곤 하지만 정확히 쓰고 읽기 위해서는 최소한의 공부가 필요하다. 우선 Terraform 을 설치하는게 우선이다.1. Terraform 설치 (업그레이드)가장 좋은 방법은 공식 사이트의 설치 가이드를 보고 설치하는 것이다.나는 mac 을 이용하고 brew 를 통해 설치, 삭제, 업그레이드를 관리하는 것이 용이하므로 brew 로 설치했었다. 그 결과 버전 1.8.2 가 설치되어 있는 것을 확인할 수 있었다.$> brew list terraform# /opt/homebrew/Cellar/terraform/1.8.2/bin/terraform$> terraform version# Terraform v1.8.2# on darwin_arm64 24년 11월 17일 기준 terrafo..
Terraform 소개
·
탐구 생활/Terraform
1. Terraform1.1 Terraform 이란?Terraform은 HashiCorp에서 개발한 무료 오픈소스 IAC 도구이다. IAC 개요 및 주요 도구에서 다룬 것과 같이 주로 인프라 프로비저닝에 사용되는 툴로써, 설치 파일은 단일 바이너리로 구성돼 있어서 빠르게 설정할 수 있다.Terraform의 가장 큰 장점 중 하나는 여러 플랫폼(프라이빗 클라우드와 퍼블릭 클라우드)을 아우르는 인프라 배포가 가능하다는 거이다. 예를 들어, 온프레미스 vSphere 클러스터부터 AWS, GCP, Azure 같은 클라우드 솔루션까지 지원한다.1.2 Terraform 과 HashiCorpHashiCorp 는 클라우드 인프라를 효율적으로 관리하고 자동화하기 위한 다양한 도구를 개발하는 회사이다. HashiCorp의..