강의 (130) 썸네일형 리스트형 Lambda + API gateway aws가 제공하는 serveless service이다. Lambda는 S3처럼 백엔드를 서버리스(Serverless)로 운영할 수 있는 서비스입니다. S3가 별도의 서버, 관리 없이도 프론트 페이지를 운영할 수 있는 것처럼, 백엔드도 인프라를 신경쓰지 않고 운영할 수 있는 서비스입니다. S3와 Lambda의 역할은 비슷하다고 생각하시면 됩니다. flask node spring 프레임 워크 컨트롤러나 flask url을 분배하는 방식을 적용하여 api를 안쪽으로 만들어 놓고 프레임워크로 감싸져 있는 소스뭉텅이를 ec2나 elb에 같은데에 업로드시키고 그 프레임워크가 로딩이 되고 그 API를 URL를 따라 API를 찌르면 API가 동작하는 방식이 되는 람다는 메서드 단위로 배포를 합니다. 대시보드에서 람다에.. Flask 어플리케이션을 docker로 실행 Docker image를 만들기 위해서는 Dockerfile이 필요합니다. Dockerfile이란 docker image를 어떻게 생성할 것인지를 정의한 파일입니다. flask 어플리케이션을 실행할 수 있는 dockerfile을 만들어보겠습니다. FROM python:3.8 ADD requirements.txt . RUN pip install -r requirements.txt ADD templates templates ADD app.py . CMD ["python", "app.py"] Flask를 실행하기 위해서는 python3.8 환경이 docker에도 setting이 되어있어야 합니다. docker run -it python:3.8 커맨드를 실행하여 python 3.8 이미지를 다운로드 받습니다. .. Docker를 실행해보자 이전 포스팅에서는 docker를 설치해보았습니다. 이번에는 설치한 docker를 이용하여 간단한 어플리 케이션을 실행해 보겠습니다. 1. 커맨드 입력 terminal 창을 열어 아래의 커맨드를 입력합니다. docker run -d -p 80:80 docker/getting-started 아래의 화면과 같이 다양한 커맨드들이 출력이 되고 이미지를 다운로드 하였다는 결과 커맨드가 나타납니다. 2. localhost 연결 크롬을 열고 localhost 를 입력합니다. 자동으로 http://localhost/tutorial/ 로 redirection 되면서 아래와 같은 화면이 나타나는 것을 확인할 수 있습니다. 왜 이런일이 발생했을까? 시작 부분에서 docker run이라는 커맨드를 입력하였습니다. docker.. Docker 사용 도커란? 도커란 원하는 프로그램을 쉽게 실행하기 위한 플랫폼입니다. 도커가 존재하기 전에는 어떤 어려움이 있었는지 도커가 이러한 문제를 어떻게 해결 하였는지를 살펴보도록 하겠습니다. Docker가 없이 실제 서비스를 운영할 때는 아래와 같은 어려움이 있었습니다. 서버에서 작성한 코드를 실행하기 위해서는 다양한 작업을 해주어야 합니다. - os 설치, 실행환경 세팅(java, python 등), 어플리케이션 코드(혹은 빌드) 다운로드, 필요한 다른 코드 다운로드(library) 등등의 과정이 필요합니다. 서버를 운영한다는 것은 1)보안 결함이 없어야 하고 2) 필요할 때 새로운 코드나, 라이브러리 추가가 가능해야 합니다. 많은 수의 요청을 처리하기 위해서는 많은 수의 서버에 대해서 운영을 해주어야 합니다... HTTP 메서드의 속성 안전 메서드를 호출해도 리소스를 변경하지 않는다. GET 메서드만 안전하다고 할 수 있다. 멱등 한번 호출하든 두 번 호출하든 100번 호출하든 결과가 똑같다. GET: 멱등이다. 몇 번을 조회하든 같은 결과가 조회됨 PUT: 멱등이다. 결과를 대체한다. 따라서 같은 요청을 여러번 해도 최종 결과는 같다. DELETE: 멱등이다. 결과를 삭제한다. 같은 요청을 여러번 해도 삭제된 결과는 똑같다. POST: 멱등이 아니다. 두번 호출하면 같은 결제가 중복해서 발생할 수 있다. 멱등 활용 자동 복구 메커니즘 서버가 TIMEOUT등으로 정상 응답을 못 주었을 때, 클라이언트가 같은 요청을 다시 해도 되는가에 대한 판단 근거 멱등은 외부 요인으로 중간에 리소스가 변경되는 것 까지는 고려하지 않는다. 캐시 가능 .. HTTP API 생성 리소스에 대해서 고민하라 그렇다면 리소스의 의미는 무엇인가? 회원을 등록하고 수정하고 조회한다고 가정할 때 등록하고 수정하고 조회하는 개념은 리소스가 아니다. 회원이라는 개념 자체가 바로 리소스다. 회원이라는 리소스를 URI에 매핑하면 된다. 참고: 계층 구조상 상위를 컬렉션으로 보고 복수단어 사용 권장 (member -> members) 회원이라는 리소스는 URI에 매핑을 하면 된다고 하였다. 그렇다면 등록하고 조회하는 행위는 어디에 매핑을 하면 될까 바로 HTTP 메서드에 매핑을 하면 된다. GET: 리소스 조회 POST: 요청 데이터 처리, 주로 등록에 사용 PUT: 리소스를 대체, 해당 리소스가 없으면 생성 (덮어쓰기) PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 elb (load balancing 설정) load balancing https://docs.aws.amazon.com/ec2/?id=docs_gateway https://docs.aws.amazon.com/ec2/?id=docs_gateway docs.aws.amazon.com ELB는 여러대의 EC2를 묶어서 사용하기 위한 서비스에요. 클라우드를 사용하지 않을때도 LB(로드발란서)를 구입해서 사용했어요. aws에서는 elb라는 제품의 형태로 제공하고 있습니다. 클라이언트들이 몰릴때 적절하게 서버로 분배할 수 있도록 도와줍니다. Target group 생성 elb를 생성하기 전에 먼저 target group을 만들어 놓도록 합시다. target group은 elb와 ec2 연결을 위한 작업을 진행하는 것이며 ec2가 연결이 가능한 상태인지 확인.. ec2 생성 및 접속 ec2 이름 설정 및 ubuntu 18.04 선택 새로운 key pair 생성 인스턴스 생성 완료 key pair 권한 재설정 chmod 400 aws-go.pem aws 접속 ssh -i 키페어 ubuntu@퍼브릭 IPv4 주소 권한 오류로 접속이 안되는 경우 // 암호화 된 key 생성 ssh-keygen -t rsa // filezila를 이용하여 aws에 id_rsa.pub 파일을 홈 폴더에 옮겨 놓기 쉽게 접속하는 방법 .ssh 폴더 안에 아래 내용을 담은 config 파일을 생성 Host springboot-webservice HostName IP주소 User ubuntu IdentityFile pem파일위치 ssh springboot-webservice로 접속가능 인바운드 규칙 편집 ja.. 이전 1 ··· 4 5 6 7 8 9 10 ··· 17 다음