2021. 8. 18. 21:31ㆍCloud/AWS 기초
aws에서 서버리스 개발자의 환경을 구축하기 위해서는 아무래도 좀 더 많은 접근 권한이 필요하다. 실제 배포 테스트 하는 환경은 aws의 람다 라고 하는 환경인데 개발자가 람다를 사용하기 위해서는 람다에 배포를 하는 권한, 혹은 배포된 람다를 실행, 테스트 할 수 있는 권한을 가져야한다. 즉 당연히 람다에 대해서 람다 자체의 실행역할을 부여하는 권한 마저도 개발자에게 있어야한다.
서버리스 환경에서 테스를 할려고 하면 개발자에게 자유로운 샌드박스 환경을 제공할 필요가 있으며 이 방법은 크게 2가지로
1. 각각의 개발자에게 테스트를 위한 별도의 센드박스 계정을 발급한다.
이때 개발자별로 환경 구성을 할 수 있는 장점이 있다. HW/SW적인 인프라가 잘 구성되어 있어야하고 개정을 발급할때마다 계정에 대한 각각에 대한 보안 관리가 잘 통제되어야 한다.
2. 그렇지 않은경우 관리자 입장에서 각각의 보안상태를 관리하는것보다 공유 샌드박스를 만들어서 사용한다. 하나의 전체 센드박스를 제공하고 SAM을 통해 서버리스를 사용해 각각의 개발자가 각각의 필요한 스택을 배포, 테스트 할 수 있도록 하는 하나의 공유된 환경을 만드는 구조이다. 여러개의 스택을 각각의 버전에 따라서 각각의 개발자가 배포하는 환경이기에 이런 환경은 계정의 관리에 대한 부담을 감소, 개발자별로 별도의 테스트 환경을 제공하기에 적합한 환경이다.
서버리스에도 당연히 CI/CD 파이프라인을 구축할 수 있다. 이때 각각의 파이프라인에서 빌드가 완료되고나면 비록 별도의 서비스라고 하더라도 테스트 계정이라는 공통적인 환경에서 배포를하고 여기서 정상적으로 구동이된다면 각각의 스탭에 따로 배포할 수 있다.
CI/CD 파이프라인?
CI/CD 파이프라인은 새 버전의 소프트웨어를 제공하기 위해 수행해야 할 일련의 단계입니다. 지속적 통합/지속적 배포(CI/CD) 파이프라인은 DevOps 또는 사이트 신뢰성 엔지니어(SRE) 방식을 통해 더 효과적으로 소프트웨어를 제공하는 데 초점을 맞춘 방법입니다.
CI/CD 파이프라인은 특히 통합 및 테스트 단계와 제공 및 배포 단계에서 모니터링 및 자동화를 도입하여 애플리케이션 개발 프로세스를 개선합니다. CI/CD 파이프라인의 각 단계를 수동으로 실행할 수도 있지만, CI/CD 파이프라인의 진가는 자동화할 때 드러납니다.2) 출저 Red Hat
앱을 실행한다고 한다면 계층과 시점에 따라서 여러가지 종류에 따른 테스트를 한다. 이때 서버리스 애플리케이션 테스트를 할때 선택할 수 있는 환경은 어떤것이 있을까?
계층테스트
1. 개발자의 개인pc(로컬환경)에서 테스트한다.
2. 1에서 무사히 실행이 된다면 리모트에 있는 센드박스 환경에 에플리케이션 스텍을 배포해 통합 테스트를 실시한다.
3. 정상적으로 동작하는것을 확인한 후 자동화 되어있는 ci/cd파이프라인으로 통합 테스트를 한다.
* 필요시 테스트 계정환경에 배포를 통해 다양한 환경에서 구동이 되는지 확인할 수 있다.
단위 테스트
로컬에서 진행될 경우는 특히 Unit test(유닛 테스트)를 할 필요가 있다.
유닛 테스트는 자동화에서 실행이 되며 ci/cd에서 실행될때부터 유닛테스트가 되는지 확인해야한다.
또한 테스트할때 어쩔수 없이 mocking을 해야할 때가 있는데 대표적인 예시로 DynamoDB, local, localstack, custom mocking 등이 있다.
이런 내용을 보며 착각할 수 있는 내용이 있는데 람다 환경에서 배포되는 애플리케이션은 line by line으로 디버깅을 못한다. 라고 생각할 수 있지만 그렇지 않다. SAM CLI는 Docker를 통해 마치 람다에서 실제 작업하는 것처럼 실행하는 환경을 제공해 준다. 이때 디버깅이 가능하며 컨테이너를 통해 브라우져 호환 테스트도 할 수 있다.
우리는 3개의 개시물을 통해 7가지에 대해 알아보았다.
1. 람다 코드 작성시 알고있어야하는 코드 작성시 유희사항은 무엇이며
2. 코드 생성 과정에서 필요한 디펜던스 외부라이브러리 등을 어떻게 관리해야하는지
3. 서버리스 에플리케이션을 관리해 주는 서버리스 에플리케이션 프레임워크를 사용해 실제 배포를 할 수 있는 예시는?
4. 코드 리포지토리를 함수별로 만드는게 맞는지 하나의 리포지토리로 저장해도 되는가?
5. 서버리스 개발 환경에 대한설정은 무엇이며
6. 테스트는?
7. 디버깅은 할 수 있는가?
'Cloud > AWS 기초' 카테고리의 다른 글
Amazon S3 part.2 (0) | 2021.09.06 |
---|---|
Amazon S3 part.1 (0) | 2021.09.06 |
AWS Lamdba (코드 작성 및 관리) (0) | 2021.08.18 |
AWS Lambda(AWS람다란?) (0) | 2021.08.18 |
AWS EC2의 시스템 인프라 (0) | 2021.08.12 |