인프라 구조마저 코드로 조작하고 있는 현재, 가장 많이 쓰이는 도구는 테라폼과 앤서블이 있습니다. DevOps Loadmap에서도 두 가지 방법을 가장 권장하고 있네요! 그도 그럴 것이, 클라우드 인프라의 경우 GUI로 클릭하면서 조작하거나 혹은 각각이 제공하는 sdk를 사용해 인프라를 설정하지만, 이렇게 하면 서로 어떻게 인프라를 설정했는지 공유가 어렵고 숙련도에 따라 설정이 확연히 달라지는 경우가 종종 발생합니다. 이런 문제들을 해결하고자 HashiCorp에서 Terraform이라는 IaC 도구를 만들어 세상에 공개했습니다. Terraform과 성격이 비슷한 도구가 Ansible인데, Terraform과 Ansible의 차이는 간단하게 생각해서 아예 뜯어 고칠 것인지, 일부 수정할 것인지의 차이가 있..
인프라
MongoDB 추가 몽고디비를 사용하여 데이터를 지속적으로 보관할 수 있도록 하겠습니다. 우리의 애플리케이션의 경우는 유저가 생성하는 orders를 보관하기 위해 사용합니다. 강좌에서는 이전에 작성한 코드를 그대로 복사 붙여넣기해서, 일단 파일에 어떤 코드가 작성되었는지를 먼저 보겠습니다. MongoDB 관련해서 abstract.repository.ts, abstract.schema.ts, database.module.ts 총 세 개의 파일을 추가할 예정입니다. 1. database.module.ts import { Module } from '@nestjs/common'; import { ConfigService } from '@nestjs/config'; import { MongooseModule } ..
도커 예를 들어, Node.js로 웹 서버 및 웹 서버 서비스를 만들었다고 할 때, 나의 운영체제와 Node.js 버전 및 DB 버전에서 코드가 정상적으로 작동할 수 있습니다. 하지만, 사람마다 사용하고 있는 운영체제도 다 다르고 런타임 환경도 다르고 사용하고 있는 DB의 버전도 다르며 의존성 및 여러 가지에서 차이가 발생합니다. 단순한 차이 때문에 전체 애플리케이션을 구동하기 위해 버전을 일일이 다 맞추어야 하고 운영체제도 고려해야 하는 등 복잡한 과정이 잇따릅니다. 여기서 도커가 등장합니다! 도커는 하나의 컨테이너로 우리가 만든 애플리케이션과 시스템 도구 및 환경설정, 의존성 등을 한 데 담아서 어떠한 PC에서든 동작할 수 있도록 해줍니다. 이렇게 도커 컨테이너를 사용하면, 애플리케이션 구동의 런타임..
파드 생성 컨테이너를 담을 파드를 생성합니다. 그런데 파드를 만드는 데는 2가지 방법이 있습니다. 먼저 첫 번째 방법입니다. kubectl run [파드명] --image=[이미지명] 이렇게 해서 파드를 생성한 다음에 파드가 잘 생성되었는지 확인합니다. kubectl get pods 다음 방법입니다. run이 아니라 create를 통해서 파드를 생성하는 것입니다. kubectl create deployment [파드명] --image=[이미지명] 동일하게 파드 생성을 확인합니다. kubectl get pods 그런데 둘은 동일하게 파드를 생성하는데 왜 명령어를 굳이 2개나 사용할까요? 디플로이먼트 둘의 차이는 바로 디플로이먼트입니다. run을 통해 생성한 파드는 디플로이먼트가 없으며, create dep..