49
PaaS 를 를를를 를를를 를를 2016-09-27 김김김

PaaS를 활용한 효율적 개발

Embed Size (px)

Citation preview

Page 1: PaaS를 활용한 효율적 개발

PaaS 를 활용한 효율적 개발2016-09-27 김정민

Page 2: PaaS를 활용한 효율적 개발

2

딜레마 ?

불치하문과도한 질문은 감사합니다 !언제든지 질문해주세요…

✋ I have a question!

Page 3: PaaS를 활용한 효율적 개발

3

발표자는 ?

• 김정민• IaaS / PaaS 엔지니어• Cloud 관리 / 자동화 기능 개발자• 좋아하는 것 : IT, 개발 , 클라우드 ,

위키• http://github.com/jmnote

└ 별거 없음… ★ 최대 3개

( ucloud biz, devpack )

Page 4: PaaS를 활용한 효율적 개발

4

차례 • Cloud• PaaS• Cloud Native Applica-

tion• Microservice• FrameworkPaaS 세상에서 개발자로 살아남기 ;;결국 다 먹고 살자고 App 배포하자고 하는 얘기

IaaS/PaaS 의 차이를 아시는 분 ?

PaaS 세상이 오고 있다

Page 5: PaaS를 활용한 효율적 개발

5

Cloud?

IT 자원을 제공하는 서비스

인터넷 상에서 리소스를 간편하게 할당받아 사용하는 서비스

빠른 프로비저닝 · 릴리즈 , 구성가능한 컴퓨팅 리소스 공유 풀에 온디맨드 네트워크 접근을 가능하게 하는 모델 - NIST

집적 · 공유된 IT 자원을 이용자의 요구 · 수요 변화에 따라 통신망을 통해 신축적으로 이용가능한 정보처리체계 - 클라우드컴퓨팅 발전법

인터넷 기술을 활용하여 IT 자원을 제공하는 기술 · 서비스

리소스를 요청 / 관리하는 기능을 웹과 API 로 제공함 ★

as you know…

└ endpoint, CLI

진지한 궁서체…

Page 6: PaaS를 활용한 효율적 개발

6

Cloud 의 종류

https://blogs.technet.microsoft.com/kevinremde/2011/04/03/saas-paas-and-iaas-oh-my-cloudy-april-part-3

SaaS 소프트웨어를 제공하는 클라우드PaaS 개발플랫폼을 제공하는 클라우드IaaS 인프라를 제공하는 클라우드

On-Premises Cloud 아님 반대개념… 자체설비 구축 · 운영

● ● ● as a service…

오늘의 주제 , 개발자용 Cloud

Page 7: PaaS를 활용한 효율적 개발

7

IaaS vs PaaS

Cloud 설명

IaaS • 인프라 ( 주로 OS 가상머신 *) 을 제공하는 서비스• “ 리눅스 / 윈도우 서버가 필요할 때”

PaaS

• 개발플랫폼을 제공하는 서비스• “ 애플리케이션을 배포할 서버가 필요할 때”• PaaS 는 주로 IaaS 위에 구축됨 ∵ PaaS 에 필요한 인프라를 간편하게 증설하기 위해

* ‘ 인프라’라고 하면 OS 가상머신 ( 서버 / 데스크탑 ) 이외에 스토리지 , 로드밸런서 , 네트워크 등도 포함 . 여기서는 OS 가상머신 서버로 한정

리눅스 서버에

배포하면 되지 ?

Page 8: PaaS를 활용한 효율적 개발

8

IaaS

인프라를 제공하는 Cloud 서비스

• 제공되는 것 : Linux, Windows 등의 OS 가상머신• 서비스 : AWS EC2, kt ucloud biz 등• 솔루션 : OpenStack, CloudStack 등• 하이퍼바이저 : KVM, VMware, Xen, Hyper-V 등

OS 가상머신을 제공하는 서비스를 지칭하는 경우가 많음└ OS 가상머신 ( 서버 / 데스크탑 ), 스토리지 , 로드밸런서 , 네트워크

Infrastructure as a service

└ + XenServer, Oracle VM Server

써본신 분 ?

Page 9: PaaS를 활용한 효율적 개발

9

PaaSplatform as a service

개발플랫폼을 제공하는 Cloud 서비스└ 실행 런타임 , 웹서버 , 개발도구

개발을 위한 플랫폼을 구축할 필요 없이 , 필요한 개발요소들을 웹에서 쉽게 빌려 쓸 수 있게 하는 모델 – 위키백과

탄력적인 Cloud 환경에서 애플리케이션 스택의 호스팅 , 구성 , 배포 · 관리를 자동화하는 클라우드 애플리케이션 플랫폼 - 레드햇

개발자 컴퓨터에서 개발 Application 배포 및 실행 서비스 제공

FTP 로 소스코드 업로드하여 사용하는 웹호스팅과는 무엇이 어떻게 다를까 ?

Page 10: PaaS를 활용한 효율적 개발

10

PaaS개발자 맞춤형 Cloud

PaaS 는 주로 IaaS 위에 구축됨 ∵ PaaS 에 필요한 인프라를 간편하게 증설하기 위해∴ 2 중 Layer – IaaS(OS 머신 가상화 ) 위에 PaaS( 컨테이너 )

• 솔루션 : Cloud Foundry, OpenShift 등• 서비스 : devpack, PWS, Bluemix, ElasticBeanstalk,

GAE 등

소스코드 배포 / 실행 환경을 별도 구성없이 즉시 제공하는 서비스

대략 유연하고 탄력적인 WAS 를 제공하는 Cloud 서비스

미들웨어 , 프레임워크를 유연하게 배포 가능

웹서버 , 패키지 구성을 소스코드처럼 관리 , 간편 scale out, 로드밸런서 포함 ★

└ 정확히는 컨테이너 + α

Page 11: PaaS를 활용한 효율적 개발

11

IaaS vs PaaS개발자는 Application 요리에 집중하고 싶다…

대자연 캠핑장 글램핑 호텔

데크

텐트

음식

SaaS 가 더 좋은 거 아님 ? 원래 출처가 어딘지는 모르겠으나 , IBM 공진기님의 발표자료에서 참고함 이런 근사한 비유가 있었다니… 캠핑족이신가 ?

Page 12: PaaS를 활용한 효율적 개발

12

IaaS vs PaaS

서버 확장

IaaS

VM 확장증설 Container 확장

운영서버구성

사용자계정생성O/S 설치 / 패치

시스템 SW 설치

코드개발 / 테스트

실행소스코드 업로드

운영서버구성

사용자계정생성O/S 설치 / 패치

시스템 SW 설치

코드개발 / 테스트

실행소스코드 업로드

운영서버구성

사용자계정생성O/S 설치 / 패치

시스템 SW 설치

코드개발 / 테스트

실행소스코드 업로드

28 일 13 일 1 일

H/W 구매 , 설치 H/W 구매 , 설치 H/W 구매 , 설치PaaSOn-Premises

7 일 2 일 0 일

구축

구축 , 증설기간 대폭 단축 !

정말 ?

Page 13: PaaS를 활용한 효율적 개발

13

웹호스팅 vs PaaS

웹호스팅 PaaS

• scale out 어려움• 제한된 언어 / 버전 지원• 웹서버 설정 변경 불가• 프레임워크 이용 어려움

• scale out 용이함• 다양한 언어 / 버전 지원• 웹서버 설정 변경 가능• 프레임워크 이용 자유로움

• PHP 5.6 대신 7.0 버전을 쓰고 싶다 . ( 왜 ?)

• 아파치 DOCUMENT_ROOT 경로를 바꾸고 싶다 .

• 아파치 대신 Nginx 를 쓰고 싶다 .

No Problem!즉시 적용 가능

http://zetawiki.com/wiki/ 웹호스팅 _vs_PaaS

Page 14: PaaS를 활용한 효율적 개발

14

기업환경에서의 PaaS

Load Balancer

Web Web

WAS

Load Balancer

Router Router

App App

전통적 구성

DB DBNAS Storage

PaaS 구성 장점은 ? OS·MW·DB 구축 · 운영 비용절감 주로 로드밸런서 기능 포함 scale out 가능 애플리케이션 개발에 집중

단점은 ? cloud storage 필요 ( 왜 ?) session clustering 필요 ( 왜 ?) 개발자의 이해 필요 장점을 위한 단점… 언제나 자유롭게 scale out 가능 ★

WAS

In-MemoryCache

Page 15: PaaS를 활용한 효율적 개발

15

PaaS 서비스 비교

kt dsdevpack

IBM Bluemix

PivotalWeb

Service

AWSElastic

Beanstalk

GoogleApp

Engine

Cloud Foundry

Cloud Foundry

Cloud Foundry

자체솔루션

자체솔루션

KTucloud

bizIBM AWS AWS Google

PaaS솔루션

인프라

서비스

더 많은 서비스를 살펴보려면 http://paasfinder.org 참고

Page 16: PaaS를 활용한 효율적 개발

16

devpack

“develop + package”

ktds 의 PaaS 서비스국내기업 최초 상용 PaaS

Cloud Foundry 기반 + 사용자 포탈 제공

[ 데브팩 ]

Page 17: PaaS를 활용한 효율적 개발

17

devpack 의 특장점 다양한 언어 지원 Java, PHP, Python, Go, Node.js,

Ruby

메모리 1GB 당 월 2 만원 정도 타사 대비 저렴한 가격

트래픽 3TB 무료 제공

MySQL, Redis 부가서비스 이용가능

30MB Redis 인스턴스 1 개 상시 무료

모니터링 화면

앱 인스턴스 메모리 최소단위가 1GB 라는 얘기는 아님1MB 단위로 설정할 수 있음간단한 PHP 애플리케이션이라면 100MB 도 충분함100MB 라면 월 2000 원 정도

Page 18: PaaS를 활용한 효율적 개발

18

Cloud Foundry

클라우드 애플리케이션 실행 플랫폼 오픈소스 PaaS 소프트웨어다양한 인프라스트럭처 지원

사용자 인증 / 관리

라우터 (≒ 로드밸런서 , 도메인기반 )

https://docs.cloudfoundry.org/concepts/architecture/미터링 로그 수합

애플리케이션 보관 / 실행

부가서비스 연동

아키텍처

cloudfoundry.org

Page 19: PaaS를 활용한 효율적 개발

19

Cloud Foundry 빌드팩애플리케이션용 프레임워크 , 런타임 지원 패키지

• 내장 빌드팩 Java, Ruby, Node.js, Go, PHP, Python• 런타임 관련 프레임워크 사용 가능 Spring , Symfony, Django, Rails 등• 서드파티 빌드팩 사용 가능• 원하는 빌드팩 만들어 사용 가능

Page 20: PaaS를 활용한 효율적 개발

20

Cloud Native Application?클라우드 네이티브 애플리케이션 ?

PaaS 도 결국 다 먹고 살자고 App 배포하자고 하는 얘기

어떻게 해야 잘 할 수 있을까 ?

Page 21: PaaS를 활용한 효율적 개발

21

PaaS & Cloud Native App 관련 주제

본격 PaaS 삼국지 어디에도 없는 근본없는 그림…PaaS 환경에서 개발하다보니관심이 가게 된 것들…관련이 깊은 것끼리 연결해보았음

몇 개나 알고 계신가요 ?

Page 22: PaaS를 활용한 효율적 개발

22

Cloud Native Application?

• 모던 웹 애플리케이션 프레임워크 활용• 신속한 배포 , 출시 가능• Cloud DB, Cloud Cache, Cloud Storage 등 Cloud 요소를 활용• 필요시 즉각적인 증설이 가능하도록 구성 ★• 마이크로서비스 아키텍처의 구성요소로서 이야기하는 경우가 많음• 상호간 REST API 로 연동

클라우드 환경 ( 특히 PaaS) 에 적합하게 구성된 애플리케이션엄밀한 정의가 있는 것은 아님 . 아직 Wikipedia 에 표제어로 등재되지 않음애플리케이션 관련 요소들이 점차 Cloud 화되고 있는데 , Cloud 를 적극 활용할 때 어떤 구조가 좋을까에 대한 지향점

“ 클라우드 태생의 애플리케이션”

Page 23: PaaS를 활용한 효율적 개발

23

기업환경에서의 PaaS

Load Balancer

Web Web

WAS

Load Balancer

Router Router

App App

전통적 구성

DB DBNAS Storage

PaaS 구성

WAS

In-MemoryCache

다시 보기…

App 이외의 요소들이 Cloud 화되어 있다frontend 쪽 ) App 인스턴스 증설시PaaS 가 유연하게 처리함

backend 쪽 ) 같은 곳을 바라보니문제가 없을까 ?

아래쪽에 ..In-Memory Cache 는 뭐지 ?왜 점선으로 그렸을까 ? ( 없어도 되니까 )DB와 Storage 는 점선이 아닌데 ?( 있어야 하니까 )

Page 24: PaaS를 활용한 효율적 개발

24

Session Clustering

• 스티키 세션 - 로드밸런싱 환경에서 사용자의 세션이 유지되도록 하는 것• 세션 클러스터링 – 애플리케이션 간 세션을 공유하는 것

http://zetawiki. com/wiki/ 스티키 _ 세션http://zetawiki. com/wiki/ 세션 _ 클러스터링

Load Balancer

Web Web

WAS

Load Balancer

Router Router

App #1 App #2

전통적 구성 PaaS 구성

WAS

In-MemoryCache

소프트웨어 라우터로서단순한 분기 알고리즘Round Robin 사용

출발지정보의 해시값에따라 분기 경로 결정

특정 사용자의 경로는App 인스턴스 #1, #2 를왔다갔다 하게 됨

공유저장소가 세션을기억해줘야 함

특정 사용자의 경로는 특정 WAS만으로 한정됨예 ) 사용자 1-WAS1 사용자 2-WAS2

세션이 언제 죽는다고

생각하나 ?

… 사람들에게서

잊혀졌을 때다 !!

그냥 공유저장소면 되는데 세션정보는 매번 확인하므로성능을 위해 인메모리 키 - 밸류 스토어 사용이 권장되는 것

Load Balancer 의 분기알고리즘을 Source Hash 로 하면이상없음 . 단 , 증설 · 감설시 매핑관계가 흐트러질 수 있음

Page 25: PaaS를 활용한 효율적 개발

25

Microservice

바운디드 컨텍스트로 느슨하게 결합된 서비스 지향 아키텍처 전체 서비스가 동시에 업데이트되어야 한다면 느슨한 결합이 아님 주변 서비스들에 대해 알아야 할 것이 너무 많다면 바운디드 컨텍스트가 아님

작은 서비스의 결합을 통해 하나의 응용프로그램을 개발하는 방법• 각 서비스가 독립적인 비즈니스 로직으로 구성됨• 애플리케이션 간 REST API 연동• 서로 다른 프로그래밍 언어 , 데이터베이스 기술로 작성될 수 있음• 지속적 딜리버리 (CD) 가능

http://zetawiki.com/wiki/마이크로서비스

Page 26: PaaS를 활용한 효율적 개발

26

Bounded Context

• “ 적절한 컨텍스트 구획” , DDD 의 중심 패턴• 마이크로서비스로 전환하려면 컨텍스트를 적절히 식별하여 분리해야 함• 주변 서비스들에 대해 알아야 할 것이 너무 많다면 바운디드 컨텍스트가 아님

http://martinfowler.com/bliki/BoundedContext.html

Page 27: PaaS를 활용한 효율적 개발

27

도메인 주도 설계• 소프트웨어 설계 기법의 하나• 복잡한 도메인의 설계는 모델 기준으로 해야 함• 시스템 구현 위해 특정기술이 아니라 도메인과 로직에 초점• 시스템 요구를 기술하기 위해 도메인 전문가가 도메인 모델 제공• 사용자 , 개발자가 참고할 수 있는 공통 언어를 형성해야 함• 다층 아키텍처의 객체지향 시스템에서 도메인층을 기술하는 것에 중점을 둠

http://zetawiki.com/wiki/ 도메인 _ 주도 _ 설계 _DDD

Domain-Driven Design

Page 28: PaaS를 활용한 효율적 개발

28

도메인 구성 단위 in DDD

한국어명 영어명 설명개체 entity 도메인 모델 내의 객체 . 속성이 아니라 연속성 , 식별성에 의해 정의

값 객체 value object 사물의 특성을 기술하는 객체 . 보통 식별자 없이 , 읽기 전용 객체 . Flyweight 패턴을 이용해 공유

서비스 service 조작이 객체에 속하지 않는 경우에 서비스로 구현

리파지토리 repository 도메인 객체 취득은 , 저장소 변경이 용이하도록 , 리파지토리 객체가 전담 처리

팩토리 factory 도메인 객체 생성 메소드는 , 변경이 용이하도록 팩토리 오브젝트가 전담 처리

http://en.wikipedia.org/wiki/Domain-driven_design#Building_blocks

Page 29: PaaS를 활용한 효율적 개발

29

Agile

http://zetawiki.com/wiki/ 애자일 _소프트웨어 _ 개발

• “ 가벼운 프로세스“ , “ 민첩함” , “ 능동적” , “ 자발적” , “ 형식에 구애받지 않음”• 반복 점진 개발 + 품질 개선 활동• 프로그래밍에 집중하는 유연한 개발 방식• 요구사항 피드백을 계속 받고 자주 릴리즈 ?

개발자 입장에서는…애초에 요구사항을 잘 주세요정확하고 작은 요구사항 /피드백

문서작업 좀 줄여주세요개발에 집중하고 싶어요

Page 30: PaaS를 활용한 효율적 개발

30

CI / CD

http://zetawiki.com/wiki/ 지속적통합 _CI,_ 지속적배포 _CD

continuous integration continuous delivery

• 지속적으로 품질 관리를 적용하는 프로세스를 실행하는 것

• 작은 단위의 작업 , 빈번한 적용 .

지속적인 통합은 모든 개발을 완료한 뒤에 퀄리티 컨트롤을 적용하는 고전적인 방법을 대체하는 방법

• 도구 예시 : Jenkins

• 짧은 주기로 소프트웨어를 생산하는 소프트웨어 공학적 접근법

• 상시 , 신뢰성 있는 릴리즈• 도구 예시 : Spinnaker

Page 31: PaaS를 활용한 효율적 개발

31

CD 도구 - Spinnaker

http://www.spinnaker.io/http://techblog.netflix.com/2015/11/global-continu-ous-delivery-with.html

Page 32: PaaS를 활용한 효율적 개발

32

DevOps

http://zetawiki.com/wiki/데브옵스 _DevOps

• "Development ( 개발 ) + Operations ( 운영 )"

• 개발자와 운영자의 공감 , 소통하는 조직문화• 개발과 운영이 하나인 것처럼 협동 관리하는 것• 개발자과 운영자의 소통과 협업을 촉진하여 혁신 속도를 빠르게 하는 업무방식• 개발 , 품질보증 , 운영이 한개의 사이클로 묶여 유기적으로 연동되는 개발 패러다임• 개발자 , 운영자 , 품질관리 조직 사이의 업무 프로세스 , 역할 조율 , 자동화 등

continuous delivery

와의 차이점은 ?

Page 33: PaaS를 활용한 효율적 개발

33

프레임워크 이야기결국 다 먹고 살자고 App 배포하자고 하는 얘기

PaaS랑 뭔

상관임 ?

Page 34: PaaS를 활용한 효율적 개발

34

웹 애플리케이션 프레임워크

• 재사용 가능한 라이브러리 및 클래스 집합• 애플리케이션의 큰 틀과 구조를 결정함• 설계자가 의도한 디자인 패턴들의 집합으로 구성됨• 내부적 제어흐름이 있음• 개발자는 프레임워크를 통해 기능 호출

웹 애플리케이션 개발을 위해 설계된 소프트웨어 프레임워크

프레임워크

http://zetawiki.com/wiki/ 프레임워크http://zetawiki.com/wiki/ 웹애플리케이션 _ 프레임워크

as you know…

Page 35: PaaS를 활용한 효율적 개발

35

언어별 프레임워크언어 프레임워크 예시Java Spring, Grails, Play

Ruby Rails, Sinatra

Node.js React, AngularJS, Express.js, Me-teor

Go Revel, Martini, Gorilla

PHP Laravel, CakePHP, Symfony, Zend

Python Django, Flaskhttp://zetawiki. com/wiki/ 언어별 _ 웹애플리케이션프레임워크

Page 36: PaaS를 활용한 효율적 개발

36

Spring 프레임워크오픈소스 애플리케이션 프레임워크Java 프레임워크 중 가장 대중적임

http://zetawiki.com/wiki/ 스프링 _ 프레임워크

• 2003년 , 아파치 라이선스 2.0 으로 공개됨• 2004년 v1.0, DIxAOP 컨테이너 , Bean 정의파일 도입• 2006년 v2.0, Bean 정의파일 XML 로 변경 , 애노테이션 , JPA, 스크립트 언어 지원• 2009년 v3.0, 애노테이션 추가• 2011년 v3.1, 캐시 기능 추가• 2013년 v4.0, 애노테이션 , 웹소켓 , 테스트 기능 추가

Page 37: PaaS를 활용한 효율적 개발

37

Spring 하위 프로젝트

http://zetawiki.com/wiki/ 스프링 _ 프레임워크

영어명 한국어명 설명 Spring Boot 스프링 부트 초기 구성 및 기동 간소화 Spring MVC 스프링 MVC 웹애플리케이션 MVC

Spring Integration 스프링 연동 시스템 연동 Spring Batch 스프링 배치 배치 처리 Spring Security 스프링 시큐리티 인증 Spring Data 스프링 데이터 데이터 접근 추상화

Page 38: PaaS를 활용한 효율적 개발

38

Spring Boot

• 스프링 프로젝트의 일부• 스프링 " 설정보다 컨벤션 (CoC)" 솔루션• 초기 구성 및 기동 간소화• 'starter' POM 으로 기본설정 자동수행 , 자동연결 강화• 자주 사용되는 프로젝트 조합이 미리 준비됨• stand-alone 웹서버 ( 예 : 톰캣 ) 내장 (embed)

→ WAR 파일로 배포할 필요가 없음• Cloud Foundry 와 찰떡궁합

http://zetawiki. com/wiki/ 스프링부트 _SpringBoothttp://zetawiki. com/wiki/Make_JAR,_not_WAR

Page 39: PaaS를 활용한 효율적 개발

39

이클립스 vs 스프링 툴 스위트 (STS)

이외에 IntelliJ IDEA 도 많이 사용됨

http://zetawiki.com/wiki/ 이클립스http://zetawiki.com/wiki/ 스프링 _툴 _ 스위트

• 이클립스 IDE• 용도 : 주로 자바 개발

• 이클립스 기반 IDE• 용도 : 스프링 애플리케이션 개발• 관련 플러그인 합본 - Cloud Foundry - Gradle - Pivotal tc Server

Page 40: PaaS를 활용한 효율적 개발

40

Spring Boot 기초 예제Dependencies: Web@RestController vs @Controller

Page 41: PaaS를 활용한 효율적 개발

41

Spring Boot - DB 연동 - JDBC

Dependencies: spring-boot-starter-jdbc

http://zetawiki.com/wiki/ 스프링부트 _JDBC_CF 서비스 _ 자동연결

Page 42: PaaS를 활용한 효율적 개발

42

Spring Boot - DB 연동 - JPA

Dependencies: spring-boot-starter-data-jpa

http://zetawiki.com/wiki/ 스프링부트 _JPA_CF 서비스 _ 자동연결

Page 43: PaaS를 활용한 효율적 개발

43

Spring Boot - Cloud 데이터소스 연결Dependencies:

• spring-boot-starter-cloud-connectors• spring-boot-configuration-processor

설명 순서가 이상하다… DB 연동 예제는 이미 하지 않았나 ?

Page 44: PaaS를 활용한 효율적 개발

44

Spring Boot - redis 연동

http://zetawiki.com/wiki/ 스프링부트 _Redis_CF 서비스 _ 자동연결

Dependencies: spring-boot-starter-redis

Page 45: PaaS를 활용한 효율적 개발

45

기초실습 시나리오

• https://github.com/jmnote/jmSpringJdbcMovie• https://github.com/jmnote/jmJpaTest• https://github.com/jmnote/jmJdbcTest

구분 내용기초예제 • devpack 접속 , 앱 삭제 , DB 삭제

• 이클립스에 devpack 서버 등록• Hello 앱 신규작성 , 로컬 / 원격 실행

DB 연결 • DB 상품 신청• cf cli 환경설정• phpMyAdmin 앱 올리기• 데이터 마이그레이션• jmSpringMovie 소스코드설명 , 실행 *• jmPhpMovie 소스코드설명 , 실행 *신규작성 • jmJdbcTest2 *• jmJpaTest2 *

오늘 한다는 건 아니고… 그냥 생각해본 것

Page 46: PaaS를 활용한 효율적 개발

46

Laravel

• PHP 웹 애플리케이션 프레임워크• MVC 구조• 쿼리빌더 + ORM

• 마이그레이션 , 시딩• 템플릿 엔진• Redis 연동 , Session Clustering 이 간편함

Page 47: PaaS를 활용한 효율적 개발

47

Laravel 설정APP_ENV=localAPP_KEY=APP_DEBUG=trueAPP_LOG_LEVEL=debugAPP_URL=http://localhost

DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=homesteadDB_USERNAME=homesteadDB_PASSWORD=secret

CACHE_DRIVER=fileSESSION_DRIVER=fileQUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1REDIS_PASSWORD=nullREDIS_PORT=6379

MAIL_DRIVER=smtpMAIL_HOST=mailtrap.ioMAIL_PORT=2525MAIL_USERNAME=nullMAIL_PASSWORD=nullMAIL_ENCRYPTION=null

설정파일 .env

캐시 · 세션 ·큐 드라이버로 redis 사용가능 같은 redis, 같은 APP_KEY 라면 세션 공유 가능

https://github.com/laravel/laravel/blob/master/.env.example

Page 48: PaaS를 활용한 효율적 개발

48

감사합니다PaaS 세상은 온다… ( 언제 ? )

개발자라면 PaaS 를 사용해 보면서 Cloud Native Application 에 익숙해지자 .

개발자가 아니라면 ? 개발을 공부하자

Page 49: PaaS를 활용한 효율적 개발

49

PaaShttp://paasfinder.org PaaS 파인더http://ko.wikipedia.org/wiki/데브팩 데브팩 - 위키백과http://ko.wikipedia.org/wiki/클라우드_파운드리 클라우드 파운드리 - 위키백과https://docs.cloudfoundry.org/buildpacks/ buildpacks - Cloud Foundryhttp://www.slideshare.net/derekcollison/design-of-cloud-foundry Design and Architecture of Cloud Foundry - Derek Collisonhttp://www.slideshare.net/JinGiKong/pycon-apac-2016-django-flask-paas-ibm-bluemix Django, Flask 고민없이 개발하고 서비스하는 PaaS, IBM블루믹스 - 공진기http://www.slideshare.net/leosace/paa-s-openshift20140715 오픈소스 PaaS 솔루션 openshift 소개 - 김호중

마이크로서비스http://www.moreagile.net/2014/10/microservices.html 마이크로서비스가 가져올 미래의 개발 패러다임 - 정도현

DevOpshttp://www.slideshare.net/JinGiKong/bluemix-devops-cognitive-cloud-connect Bluemix 로 접근하는 DevOps - 공진기

참고 자료