본문 바로가기
프로그래밍/local stack

Local stack 이란?

by Hwan2 2021. 9. 19.
반응형

 

 

1. Local stack 이란?

Site : https://localstack.cloud/

 

LocalStack

Develop and test your cloud apps offline.

localstack.cloud

Github : https://github.com/localstack/localstack

 

GitHub - localstack/localstack: 💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps of

💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline! - GitHub - localstack/localstack: 💻 A fully functional local AWS cloud stack. Develop and te...

github.com

local stack은 오픈소스로 만들어진 프레임워크 입니다.

local stack의 가장 큰 특징은 클라우드 환경을 로컬에서 직접 구현이 가능하며, 테스트할 수 있다는 것입니다.

 

Local Stack에서는 현재 AWS의 관련된 Application을 지원하고 있습니다.

Local Stack은 Application들을 도커 컨테이너로 만들어서 Cloud환경과 동일한 환경을 구축하게 됩니다.

때문에 docker-compose를 통해 정의되며 포트를 Mapping시키므로써 local에서 해당 Application(AWS lambda, S3, EC2, etc...)를 실행하고 호출할 수 있게 됩니다.

 

2. Local stack의 사용 이유

구글링을 하면 사용 이유에 대해 많이 나오며, 그 이유도 같고, 제가 설명하려는 이유도 같습니다.

우선 제가 현업에서 AWS를 활용해 개발하고 배포하는 과정에서 느꼈던 단점에 대해 설명하고자 합니다.

 

여러명에서 에자일 방법 중 TrankBased방식을 활용하여 개발을 진행할 때, 작업자들이 하나의 Master Branch에서 Origin Branch 생성하여 작업하는 내용들은 각기 다르게 됩니다. 이를 테스트 하려면 자신이 수정하거나 만든 코드를 AWS로 배포해야 하는데, 이때 문제가 발생됩니다.

  1. CloudFormation(CFN)을 통해 변경된 Application(Lambda, EC2, IAM, etc...)을 배포할 때, 작업자1 이 변경된 내용을 테스트 하기 위해서 배포된 코드가 있다면, 이 후 작업자2 는 해당 테스트가 끝나기 전에는 테스트를 할 수 없습니다. (왜냐하면 작업자 1이 수정된 코드를 배포 후 테스트를 진행하고 있는데, 작업자 2가 다른 코드를 배포하게 되면, 작업자 1이 테스트 하고 있는 코드가 master branch 코드로 초기화 되기 때문)
  2. AWS는 리전별로 같은 CFN을 배포할 수 있지만, 그렇게 되면 새로운 리전에 같은 코드를 만들게 되고, 구축하는데 드는 Work factor가 증가되게 되며 비용도 배로 지불해야 합니다. 또한 모든 리전이 똑같은 Application을 제공하지 않아서 제약이 있을 수 있습니다.(예를들어 AWS Cognito 같은 경우 지원하는 리전이 정해져 있습니다.)
  3. 테스트를 진행하기 위해 '코드 수정 - 배포 - 테스트 - 로그 확인' 의 과정 자체가 많은 Delay time을 발생시킵니다.
    특히 CFN으로 배포하게 되었을 때, CFN파일이 커지게 되면 그 시간은 배로 증가하게 됩니다.

이러한 단점들을 극복할 수 있게 해주는 것이 Local stack입니다.

Local stack을 사용하여 로컬환경에서 AWS Cloud를 구축하면, 테스트를 자유롭게 할 수 있으며, Delay time 또한 많이 줄일 수 있습니다. 

 

3. awscli-local

https://github.com/localstack/awscli-local

 

GitHub - localstack/awscli-local: 💲 "awslocal" - Thin wrapper around the "aws" command line interface for use with LocalStac

💲 "awslocal" - Thin wrapper around the "aws" command line interface for use with LocalStack - GitHub - localstack/awscli-local: 💲 "awslocal" - Thin wrapper around th...

github.com

해당 오픈소스는 Local stack에서 aws명령을 입력할 때, 길어지는 부분을 간소화 시켜주는 툴입니다.

 

예를들어,

$ aws --endpoint-url=http://localhost:4566 kinesis list-streams

해당 명령어를 다음과 같이 간략하게 사용할 수 있습니다.

$ awslocal kinesis list-streams

 

 

 

4. 참고

Youtube : https://www.youtube.com/watch?v=fzpY7x1siHw 

 

Blog : https://reflectoring.io/aws-localstack/

 

Local Development with AWS on LocalStack

Developing a Spring Boot App Against AWS Services with LocalStack

reflectoring.io

 

 

 

 

반응형

댓글


스킨편집 -> html 편집에서