
들어가기전에 앞서 블로깅에서 사용해왔던 디프롤이먼트는 모두 상태가 없는(stateless) 애플리케이션이었습니다. 즉, 디플로이먼트의 각 포드는 별도의 데이터를 가지고 있지 않았으며, 단순히 요청에 대한 응답만을 반환했습니다. 하지만 데이터베이스처럼 포드 내부에서 특정 데이터를 보유해야 하는, 상태가 있는(stateful) 애플리케이션의 경우에는 데이터를 어떻게 관리할지 고민해야 합니다. 도커의 볼륨처럼 쿠버네티스도 자체에서 호스트에 위치한 디렉터리를 각 포드와 공유함으로써 데이터를 보존하는 것이 가능합니다. 그렇지만 여러 개의 서버로 구성된 쿠버네티스와 같은 클러스터 환경에서는 이 방법이 적합하지 않을 수 있습니다. 쿠버네티스는 워커 노드 중 하나를 선택해 포드를 할당하는데, 특정 노드에서만 데이터를 ..

서비스(Service): 포드에 연결하고 외부에 노출 디플로이먼트를 통해 생성된 포드에 어떻게 접근할 수 있을까요? 이전 까지는 kubectl describe 명령어로 포드의 내부 IP를 직접 확인한 뒤 포드로 직접 접근할 수는 있었지만, 이 방법은 로컬 개발 환경 또는 쿠버 클러스터 내부에서만 사용할 수 있었습니다. 게다가 도커 컨테이너와 마찬가지로 포드의 IP는 영속적이지 않아 항상 변할 수 있다는 점도 유의해야 합니다. 여러 개의 디플로이먼트를 하나의 완벽한 애플리케이션으로 연동하려면 포드 IP가 아닌, 서로를 발견할 수 있는 다른 방법이 필요합니다. 도커 사용 방법을 되살펴 보면 도커 컨테이너는 -p 옵션으로 손쉽게 컨테이너를 외부로 노출할 수 있었습니다. 즉, 컨테이너가 생성됨과 동시에 외부로 ..

참고 : API Gateway + lambda로 REST API 만들기(GET) 참고 : API Gateway + lambda로 REST API 만들기(POST) REST API(POST)를 만든 lambda 함수에서 다른 lambda 함수를 호출해 post로 온 값을 보내고, 그 lambda 함수에 pymysql 모듈을 import해서 데이터베이스에 요청 값을 넣어봅시다. lambda 함수에서 lambda 함수 호출 GET, POST 요청 글을 참고해서 람다함수 test2를 만든다. 기존에 쓰던 test 람다함수에서 test2 람다함수를 호출하기위해서 test 람다함수의 추가적인 권한이 필요하다. 이 포스팅에 IAM 역할에서 Lambda_Fullaccess 권한을 가진 역할을 만들어서 처음 람다함수 만..

AWS API Gateway에 API키 등록하기 만든 API에 아무나 접근을 하지 못하도록 키 값을 넣어 암호화 할 수 있다. post요청글에서 만든 REST API에 API키를 등록해보자. 메서드 실행의 설정쪽에서 API 키가 필요함을 True로 바꿔준다. 다음으로 API키를 만들고, 사용량 계획과 연결하는 형태이다. API키, 사용량 계획을 만들어야한다. 먼저 API키를 하나 생성하자. 사용량 계획을 만든다. 만들면서 API를 배포했을 때 스테이지를 연결하고, API 키도 연결한다. 그리고 API를 다시 배포해준다. 키 값을 확인하고, postman으로 post요청을 테스트해보자(post글 참고). 키 값을 적지 않고 그냥 요청했을 때는 message forbidden이 뜨고, 값을 확인 할 수 없다..

AWS API Gateway, Lambda로 post 요청 만들기(REST API) get 요청 만드는 포스팅을 참고해서 API Gateway와 Lambda를 만든다. lambda 함수 import json def lambda_handler(event, context): """post 요청으로 들어온 값들이 body-json으로 묵여 있고, 전체를 body 변수에 저장(통합요청에 매핑 템플릿을 보면 body-json이 있음)""" body = event['body-json'] # TODO implement return { 'success': True, 'data': { # 거기서 star를 가지고옴 'star': body['star'] } } 통합 요청 → 매핑 템플릿 통합 요청에서 매핑 템플릿을 위에 ..

권한관리 AWS IAM IAM(AWS Identity and Access Management)은 AWS의 권한을 관리하는 서비스. 처음 AWS에 계정을 이메일로 생성하면 모든 서비스에 접근할 수 있는 SSO(Single Sign-ON) ID가 생성되고 이를 루트 권한이라고 한다. 사내에서 AWS를 이용하고자 하는 경우에 각자의 부서/팀별로 계정을 생성하여 부여한다. 이때 IAM을 이용하여 필요한 권한을 세분화하여 Role을 부여함으로써 불필요한 접근을 막을 수 있다. IAM에서는 AWS 계정 인증에 MFA(Multi Factor Authentication)를 지원한다. 여기서 펙터란 사용자의 신원을 확인하는 방법에 따라서 지식 기반, 소유 기반, 속성 기반의 인증으로 총 3가지 방법으로 나누어 지는데, ..

서버리스 Cloud Native Patterns Legacy : 인프라부터 애플리케이션까지 구축 IaaS : 하드웨어와 가상화 OS 등 인프라 요소를 서비스로 제공(EC2) Caas : 서비스 형태로 제공되는 컨테이너를 호라용하여 배포(ECS) Paas : 애플리케이션 개발에 집중할 수 있도록 인프라와 런타임 환경을 제공(Elastic Beanstalk) FaaS : 실행할 함수코드만 구현(Lambda) Saas : 제공되는 소프트웨어 사용(Gmail) 서버리스의 형태 Baas(Backend as a Service) Faas(Function as a Service) Baas는 그동안 개발자가 직접 구현하던 백엔드의 부분부분을 서비스로 제공받는 것(Auth0, AWS Cognito, Firebase). F..