MSA 전환을 위한 서비스 분리 전략
·
기초 지식/MSA
회사에서 Monolith 로 개발해오던 프로젝트들을 MSA 로 옮겨간다고 한다. 내가 맡아서 개발해온 프로젝트의 도메인 지식은 내가 가장 잘 알고 있다보니 이 프로젝트 만큼은 내가 도메인 분리를 맡게 될 것 같다...그래서 공부중이다.서비스 분리 전략 3가지 Key Point단계적으로 마이그레이션 한다.처음에는 크게 분리하고 추후 작게 분리한다.서비스 분리를 깔끔하게 나눠주는 마법같은 공식은 없다. (이 부분이 너무 슬펐다.)서비스 분리 8가지 원칙첫 번째 원칙: 작고 분리가 쉬운 서비스로 워밍업간단한 서비스를 분리하며 역량을 내재화.신규 개발 기능이나 내부 의존성이 적고, 중요도가 낮은 기능부터 시작.Pilot 서비스 분리의 기준:내부 의존성이 낮은 기능(Core 의존성, 데이터 의존성 적음).장애 발..
Terraform AWS: VPC 만들기
·
탐구 생활/Terraform
Terraform 을 이용하여 로컬 리소스를 다루는것도 의미가 있겠으나, 내가 Terraform 을 알아보기 시작한 이유는 클라우드 인프라를 재사용가능한 효율적인 형태로 다루고 싶기 때문이었다. 그 첫번째로 AWS 의 기본 리소스중 하나인 VPC 를 만들어보겠다.AWS VPC우선 지금부터 만들려고하는 AWS VPC 에 대한 개념과 이를 구성하는 세부 요소에 대해서 알아보고 왜 많고 많은 AWS 인프라 중에서 VPC 를 먼저 만들려고하는지 알아보자 VPC(Virtual Private Cloud) 란 AWS 클라우드 내에서 자신의 네트워크를 "논리적" 으로 격리하여 정의할 수 있는 가상 네트워크이다. 인터넷에 노출되면 안되는 리소스를 격리하여 보안에 필수적이며, 보안 그룹과 네트워크 ACL 를 활용하여 더욱..
Terraform 기초: 리소스 생명 주기 및 데이터 소스 관리하기
·
탐구 생활/Terraform
1. 리소스 생명 주기 (Lifecycle Rules)Terraform은 리소스를 업데이트할 때 기존 리소스를 삭제(destroy)하고 새로운 리소스를 생성(create)하는 immutable 인프라 접근 방식을 따릅니다. 그러나 모든 경우에 이러한 동작이 적합하지 않을 수 있습니다. 이를 제어하려면 lifecycle rules를 활용할 수 있습니다.1.1 create_before_destroy기존 리소스를 삭제하기 전에 새로운 리소스를 먼저 생성한다. 어떤 리소스는 다운 타임을 최소화하기 위해 이러한 조치가 필요할 것이다.resource "aws_instance" "example" { ami = "ami-123456" instance_type = "t2.micro" lifecyc..
Terraform 기초: State
·
탐구 생활/Terraform
Terraform를 사용할 때 중요한 개념 중 하나는 State 이다. 이번 글에서는 Terraform의 State의 역할과 중요성, 그리고 실무에서의 활용 방안에 대해 살펴보겠다.Terraform State란 무엇인가?Terraform의 State 파일은 리소스 구성과 실제 인프라 간의 매핑 정보를 저장하는 역할을 한다. 이는 Terraform이 실행 계획을 생성하고, 구성 파일과 실제 인프라 간의 불일치(Drift)를 식별하는 데 사용된다. 쉽게 말해, Terraform State 파일은 실제 세상에 존재하는 모든 리소스의 청사진(blueprint)이라고 볼 수 있다.이러한 State 는 terraform apply 가 되는순간 terraform.tfstate 파일에 json 형태로 저장이 된다.Te..
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..