Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Aws lambda 와 함께 서버리스 서비스 만들기

2,437 views

Published on

선택받지못한 D2 발표 자료 - 마이크로서비스 아키텍처와 Lambda 에 대해 알아보고 API-Gateway 와 함께 카카오톡 봇을 만들어 봅니다.

Published in: Technology

Aws lambda 와 함께 서버리스 서비스 만들기

  1. 1. AWS Lambda 와 함께 서버리스 서비스 만들기
  2. 2. 1_ 발표자 소개 2_ 마이크로 서비스 아키텍처 3_ 서버리스 아키텍쳐 4_ AWS - Lambda 5_ AWS - API Gateway 6_ 실습해보기 (카X오톡 봇 만들기) +_ 서비스에서의 적용과 경험담 목차
  3. 3. 발표자 소개 Name_ 성준영 School_ 경희대학교 컴퓨터공학과 3학년 재학 Circles_ T.G.WinG Company_ 노마드스타 서버개발 인턴 Contact_ wnsdud1861@gmail.com
  4. 4. 마이크로 서비스 아키텍쳐 1
  5. 5. 마이크로 서비스 아키텍쳐 모놀리식 아키텍쳐 이미지 출처 : https://martinfowler.com/articles/microservices.html 모놀리식 아키텍쳐 하나의 서비스에 하나의 프로젝트 단위로, 단일 디렉토리를 가지고 개발하는구 조 - 쉬운 개발 - 쉬운 배포 - 쉬운 스케일 확장
  6. 6. 마이크로 서비스 아키텍쳐 모놀리식 아키텍쳐 프로젝트와 팀의 규모가 커진다면 ?
  7. 7. 마이크로 서비스 아키텍쳐 모놀로식 아키텍쳐의 단점 코드의 규모가 커진다. 개발자가 알아야 할 코드의 양이 많아진다. 이해도 어렵고, 수정이 어려워진다. 시간이 지날수록 코드는 난잡해지고, 같은 일이 반복된다.
  8. 8. 마이크로 서비스 아키텍쳐 란 무엇일까요? 작은 서비스의 결합을 통해 하나의 응용 프로그램을 개발하는 방법 #작은블록단위 #비결합성 #작은 작업 #모듈식 접근 Micro Service Architecture (MSA) 이미지 출처 : https://martinfowler.com/articles/microservices.html
  9. 9. 마이크로 서비스 아키텍쳐 란 무엇일까요? 이미지 출처 : https://martinfowler.com/articles/microservices.html
  10. 10. 마이크로 서비스 아키텍쳐 란 무엇일까요? 이미지 출처 : https://martinfowler.com/articles/microservices.html 기능 단위 혹은 컴포넌트 단위로 팀을 나누어 개발, 필요에 따라 DB 분리 / 역량에 따라 언어 분리
  11. 11. 마이크로 서비스 아키텍쳐 간단한 예시 이미지 출처 : https://martinfowler.com/articles/microservices.html 유저 회원가입 Node.js / mongodb 상품정보 관련 PHP / MySQL
  12. 12. 마이크로 서비스 아키텍쳐 의 장점 개발자가 관리하는 코드의 스코프가 명확해짐 소프트웨어의 복잡성을 제어 개별 팀에서의 개발과 배포 각 마이크로 서비스별로 독립적인 개발과 배포가 가능 요구사항에 최적화된 DB의 선택이 가능 개발속도 증가
  13. 13. 마이크로 서비스 아키텍쳐 단점도 존재합니다. 운영의 어려움 인터페이스의 불일치 코드 중복 테스트의 까다로움
  14. 14. 서버리스 아키텍쳐 2
  15. 15. 서버리스 아키텍쳐 Adrian cockcroft ( AWS Vice President ) 의 트윗 만약 당신의 PaaS가 20ms 이내에 인스턴스를 실행시켜서 0.5초 동안 원하는 기능을 실행시킬 수 있다면, 그땐 그걸 서버리스라고 부르세요. 란 무엇일까요 ?
  16. 16. 서버리스 아키텍쳐 FaaS 란 Function as a Service Function as a Service (FaaS) is a category of cloud computing services that provides a platform allowing customers to develop, run, and manage application functionalities without the complexity of building and maintaining the infrastructure typically associated with developing and launching an app - wikipedia
  17. 17. 서버리스 아키텍쳐 FaaS Scale 에 신경쓰지 않는다. 사용자는 동작하는 CODE 만 작성할 뿐
  18. 18. 서버리스 아키텍쳐 그래서.. 서버리스는 ? 서버단 로직을 관리하기 위해 써드파티 어플리케이션 혹은 클라우드에 의존하는 서비스 서버단 로직을 짜되, 이벤트 기반으로 한번 쓰고 버리는, 써드파티 어플리케이션 혹은 클라우드에 의해 관리되는 서비스
  19. 19. 서버리스 아키텍쳐 그래서.. 서버리스는 ? 서버단 로직을 관리하기 위해 써드파티 어플리케이션 혹은 클라우드에 의존하는 서비스 서버단 로직을 짜되, 이벤트 기반으로 한번 쓰고 버리는, 써드파티 어플리케이션 혹은 클라우드에 의해 관리되는 서비스
  20. 20. 서버리스 아키텍쳐 FaaS 의 대표적인 서비스 Microsoft Azure Functions Amazon Web Service Lambda
  21. 21. 서버리스 아키텍쳐 Amazon Web Service Lambda 오늘의 주인공!
  22. 22. AWS Lambda 3
  23. 23. AWS Lambda AWS Lambda는 이벤트에 응답하여 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버 없는 컴퓨팅 서비스입니다. - AWS Lambda 제품 세부설명 중
  24. 24. AWS Lambda Lambda 의 특징 완전 자동화된 관리 OS 없데이트 스케일 업 / 스케일 아웃 불필요 – 자동 확장 자동 로깅 및 모니터링
  25. 25. AWS Lambda Lambda 의 특징 자체 코드 사용가능 Java / Node.js / C# / Python 코드 지원 향후 다른 언어도 업데이트 예정
  26. 26. AWS Lambda Lambda 의 특징 사용량에 따른 지불 코드 실행에 필요한 컴퓨팅 시간 및 서비스 요청량에 따라 비용 지불 + Free Tier
  27. 27. AWS Lambda AWS 서비스와의 접착성 S3 AWS 에서 제공하는 Storage Service 입니다. 이미지 서버 등으로 활용이 가능합니다.
  28. 28. AWS Lambda AWS 서비스와의 접착성 S3 에 원본 이미지가 업로드 되는 순간 Lambda 가 호출되어 이미지를 압축하고 다시 저장합니다. S3 Lambda
  29. 29. AWS Lambda AWS 서비스와의 접착성 Dynamodb AWS 에서 제공하는 noSql Database 서비스 아마존 인프라 내에서 트래픽/데이터에 따라 자동 분산하며, 빠른 성능을 자랑합니다.
  30. 30. AWS Lambda AWS 서비스와의 접착성 DynamoDB 의 데이터가 수정되는 순간을 트리거로 받아 수정 내역을 DynamoDB 에 기록합니다. LambdaDynamodb
  31. 31. AWS Lambda 한계 운영의 어려움 인터페이스의 불일치 코드 중복 테스트의 까다로움
  32. 32. AWS Lambda 한계 운영의 어려움 인터페이스의 불일치 코드 중복 테스트의 까다로움 Same with Micro Service
  33. 33. AWS Lambda node.js 와 Lambda
  34. 34. AWS Lambda node.js 와 Lambda npm 의 모든 패키지 사용 가능 (압축해서 업로드) Lambda 관련 라이브러리가 가장 활성화 ( local-lambda, serverless framwork, Apex..)
  35. 35. AWS API Gateway 3
  36. 36. AWS API Gateway 이미지 출처 : https://martinfowler.com/articles/microservices.html API Gateway 란? That’s It!API서버 앞단에서 모든 API 서버들의 엔드포인트를 단일화하여 묶어주고 API에 대한 인증과 인가 기능에서 부터 메세지에 따라서 여러 서버로 라우팅 하는 고급기능 까지 많은 기능을 담당할 수 있다. - 조대협 님의 블로그 중
  37. 37. AWS API Gateway Lambda Function 을 세상밖으로
  38. 38. AWS API Gateway Lambda Function 을 세상밖으로 API–Gateway 를 통해 Lambda Function은 URL 을 가지게 되고, 서버에 올려진 일반 API 같이 사용 가능하게 됩니다.
  39. 39. AWS API Gateway Lambda function 들을 하나로 API Gateway 를 통해 여러 개의 lambda function 을 URL 로 묶어줍니다. Lambda functions - add_pet - get_pet_categories - get_pet_traits - get_pet
  40. 40. AWS API Gateway 인증과 인가 기능
  41. 41. AWS API Gateway 인증과 인가 기능 API Gateway 를 통해 API Key 를 헤더로 보내준 클라이언트에 한해서만 Lambda function 을 실행합니다.
  42. 42. 실습해보기 4
  43. 43. 실습해보기 AWS Lambda + API Gateway로 카카X톡 봇을 만들어봅시다! 라인아 미안해......
  44. 44. Caution 최대한 많은 내용을 담았지만, 프레젠테이션의 내용만으로는 실습을 완벽하게 진행하실 수 없습니다. 진행에 어려움을 겪거나, 궁금하신 점에 대해서는 메일로 연락주세요 :D 발표에서 모든 내용을 설명드릴 예정이며 차후에 블로그에 step by step 으로 게시하도록 하겠습니다.
  45. 45. 실습해보기 AWS 계정 만들기 My Billing Dashboard 확인
  46. 46. 실습해보기 프리티어라면..
  47. 47. 실습해보기 프리티어라면.. + AWS Educate (40$ ~ 100$) 충분히 무료로 실습이 가능합니다.
  48. 48. 실습해보기 프리티어가 아니라면.. Lambda 과금정책 https://aws.amazon.com/ko/lambda/pricing/ 메모리와 Timeout 에 따라, 사용 횟수만큼 과금
  49. 49. 실습해보기 프리티어가 아니라면.. 함수에 128MB 메모리를 할당하고 한 달에 3천만 회를 실행하고 매번 200ms 동안 실행 5.83 USD / per month라면 4봉지..?
  50. 50. 실습해보기 첫번째 API 만들기 가장 간단한 예제부터 만들어 봅시다! Home Keyboard API 사용자가 최초로 채팅방에 들어올 때 표시될 자동응답 명령어 목록을 알려주는 API
  51. 51. 실습해보기 카카X톡 옐로 아이디 만들기 참고) API 문서 https://github.com/plusfriend/auto_reply/blob/master/README.md https://yellowid.kakao.com/
  52. 52. 실습해보기 첫번째 API 만들기
  53. 53. 실습해보기 Lambda Function 만들기
  54. 54. 실습해보기 Lambda Function 만들기 Select blueprint : 미리 정의된 Lambda function 을 사용할 수 있습니다. Configure triggers : S3, dynamoDB 등을 트리거로 받도록 설정합니다. Configure function : Lambda funtion 을 설정합니다.
  55. 55. 실습해보기 Lambda Function 만들기 함수명과 설명, 사용 언어 선택하기
  56. 56. 실습해보기 Lambda Function 만들기 Default 로 만들어져 있는 microservice_permission 을 선택
  57. 57. 실습해보기 Lambda Function 만들기 https://gist.github.com/sungjunyoung/53cc873c006145585c245ef2969d1804
  58. 58. 실습해보기 API Gateway 만들기
  59. 59. 실습해보기 API Gateway API 만들기
  60. 60. 실습해보기 API Gateway Resource 만들기
  61. 61. 실습해보기 API Gateway Resource 만들기
  62. 62. 실습해보기 API Gateway 만들기 카X오에서 알려준 대로 리소스를 만들어줍니다. Specification • Method : GET • URL : http(s)://:your_server_url/keyboard • Content-Type : application/json; charset=utf-8
  63. 63. 실습해보기 API Gateway Method 만들기
  64. 64. 실습해보기 API Gateway Method 만들기 카X오에서 알려준 대로 메서드를 만들어줍니다. Specification • Method : GET • URL : http(s)://:your_server_url/keyboard • Content-Type : application/json; charset=utf-8
  65. 65. 실습해보기 Lambda Function 과 연결된 모습
  66. 66. 실습해보기 API Gateway 를 세상밖으로!
  67. 67. 실습해보기 여러분만의 봇을 만들어 보세요
  68. 68. 서비스에서의 적용과 경험담 +
  69. 69. 서비스에서의 적용과 경험담 기존 서비스의 Server 인프라 EC2 S3 RDS AWS 서버 이전기 : http://www.slideshare.net/SungJunyoung/ss-69345868
  70. 70. 서비스에서의 적용과 경험담 기존 서비스의 Server 인프라 EC2 S3 RDS Server Storage Database
  71. 71. 서비스에서의 적용과 경험담 Lambda S3 Dynamodb 마이크로 서비스 아키텍쳐로의 전환
  72. 72. 서비스에서의 적용과 경험담 직면한 문제들 Lambda S3 Dynamodb 로컬에서의 테스트 배포 및 소스코드 관리방법 코어 함수의 모듈화
  73. 73. 서비스에서의 적용과 경험담 로컬에서의 테스트
  74. 74. 서비스에서의 적용과 경험담 로컬에서의 테스트 Lambda-local 로컬에서 람다 함수를 테스트 가능 aws-cli 가 설치되어 있다면 S3, dynamodb가 연동된 lambda function 테스트도 가능
  75. 75. 서비스에서의 적용과 경험담 배포 및 소스코드 관리 APEX 배포 코드 관리
  76. 76. 서비스에서의 적용과 경험담 배포 및 소스코드 관리 APEX node.js 스타 개발자 TJ Holowaychuk의 (https://www.npmjs.com/~tjholowaychuk) Lambda 함수의 빌드, 배포, 관리를 쉽게 도와주는 Command line tool http://apex.run/
  77. 77. 서비스에서의 적용과 경험담 배포 및 소스코드 관리 https://git-scm.com/ 설명이 필요없죠 :D
  78. 78. 서비스에서의 적용과 경험담 코어 함수의 모듈화 이미지 처리 모듈 SMS 코어 모듈
  79. 79. 서비스에서의 적용과 경험담 코어 함수의 모듈화 여러 함수에서 중복적으로 쓰이는 코드들, 모듈화 시켜서 사용할 수는 없을까?
  80. 80. 서비스에서의 적용과 경험담 코어 함수의 모듈화 https://aws.amazon.com/ko/blogs/korea/new-aws- step-functions-build-distributed-applications-using- visual-workflows/ AWS Step Functions AWS re:Invent 2016 에서 발표 람다 함수의 Step 을 정의할 수 있음
  81. 81. 서비스에서의 적용과 경험담 코어 함수의 모듈화
  82. 82. 서비스에서의 적용과 경험담 코어 함수의 모듈화 정식 출시 AWS Step Functions는 오늘 부터 US East (Northern Virginia), US East (Ohio), US West (Oregon), EU (Ireland), Asia Pacific (Tokyo) 리전에서 사용 가능합니다. 한국은요..? ㅠㅠ
  83. 83. 서비스에서의 적용과 경험담 코어 함수의 모듈화 P.13 다시보는 마이크로 서비스 아키텍쳐의 단점
  84. 84. 서비스에서의 적용과 경험담 개발 흐름 APEX Make lambda function Local-lambda Test lambda function API-Gateway Test With Client Manage lambda function Rest API documentation
  85. 85. 서비스에서의 적용과 경험담 개발하며 느낀 최고의 장점 쉽고, 빠르다!
  86. 86. 서비스에서의 적용과 경험담 개발하며 느낀 최고의 장점 기능별로 명확한 스코프를 가지는 함수 들
  87. 87. 서비스에서의 적용과 경험담 개발하며 느낀 최고의 장점 코드 수정 / 추가 / 삭제 후 배포시 다른 코드를 신경쓸 필요가 없음 수정
  88. 88. 다음 프로젝트는 Lambda로, 어떠세요? :D
  89. 89. 경청해 주셔서 감사합니다 :D

×