© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
박준상
메가존
On-Premise 기반 서비스
클라우드 전환기
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
발표 순서
고객사 현황과 클라우드 서비스 도입 이유
TO-BE Architecture
어떻게 도입할 것인가?
개발 환경 구축하기
Lessons learned
DevOps? DevSecOps!
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
On-Premise 기반 모바일 서비스 개발 회사
• 제조/금융권 고객사 대상 서비스 개발 (모바일 웹/앱)
• 인프라 : 고객사 D/C 내 장비 사용
• 소프트웨어 아키텍처 :
전형적인 3-Tier 구조 , 서비스 확장
시 동일 인프라 구성 필요
• 개발 환경 : RHEL + Java + Spring,
Eclipse +Maven + SVN 사용
• 서비스 방식 : 모바일 웹 페이지를
native app으로 제공 (Hybrid 방식)
WAS
Web
DB
WAS
Web
L4
Storage
고객 데이터 센터
Apache
Oracle
Oracle
EMC
Cisco
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
프로젝트 방향에 대한 고객 의사 결정
• Agile 소프트웨어 개발 방법
• DevOps 방식 서비스 개발 및 운영 환경 도입
• Container 기반 마이크로 서비스 아키텍처 도입
이미지 출처 : https://martinfowler.com/articles/microservices.html
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
왜 클라우드 서비스를 선택하였을까 ?
• 전사 DevOps 방식 Proto Type 프로젝트로 선정
• DevOps 방식 도입 시 Risk 확인 필요
• 프로젝트 성공 여부에 대한 불 확실성
Fail Fast
Fail Early
Learn Cheaply
고 비용 구조 개선
경쟁사 대비 빠른 서비스 출시
모 회사 및 고객사의 Cloud 위주 IT 투자
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
TO-BE Architecture
구축 방향
Container
기반 서비스
고 비용
소프트웨어를
클라우드 최적화된
오픈 소스
소프트웨어와
서비스로 대체
지속적 통합 및 지
속적 전달을 통한
빠른 어플리케이션
배포 및 자동화
적용 서비스
Amazon
Elastic Container Service
Amazon
Elastic Container
Registry
Apache Tomcat
Amazon Auora
AWS CodeCommit
AWS CodeBuild
AWS CodeDeploy
AWS CodePipeline
AWW CloudFormation
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
TO-BE Architecture
구축 방향
Container
기반 서비스
고 비용
소프트웨어를
클라우드 최적화된
오픈 소스
소프트웨어와
서비스로 대체
지속적 통합 및 지
속적 전달을 통한
빠른 어플리케이션
배포 및 자동화
적용 서비스
Amazon
Elastic Container Service
Amazon
Elastic Container
Registry
Apache Tomcat
Amazon Aurora
AWS CodeCommit
AWS CodeBuild
AWS CodeDeploy
AWS CodePipeline
AWW CloudFormation
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
하지만…
• 의사 결정이후 직면한
현실적인 문제들
클라우드
서비스 ?
SVN= Yes
Git = No
Dev Only
No Ops
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
AS-IS
TO-BE
On-Premise
Cloud
monolithic microservices
Infrastructure
Interim#2
Interim#1
Architecture
어떻게 도입할 것인가?
고려 사항 기술/문화적 충격 완화
클라우드/DevOps 방식에 대한 이해도 증대
도입기
• Elastic Beanstalk + RDS +
CodeStar
• Interim #1
적응기
• ECS/ECR + RDS +
Code Series
• TO-BE
성숙기
• Lambda + API Gateway +
Cognito etc
• 서비스 오픈 이후
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
1일만에 개발 환경 구축하기
• 2018년 2월 15일 Seoul Region 지원을 시작한 Code Star 사용
• 빠른 개발 환경 구축 및 AWS 환경 적응을 위해 어플리케이션 스택은
Elastic Beanstalk 템플릿 적용/생성. DB 스택은 RDS 상에서 수동 생성
AWS
CodeCommit
AWS
CodePipeline
AWS
CodeBuild
AWS
CloudFormation
AWS
CodeStar
AWS Elastic
Beanstalk
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
1일만에 개발 환경 구축하기
• 2018년 2월 15일 Seoul Region 지원을 시작한 Code Star 사용
• 빠른 개발 환경 구축 및 AWS 환경 적응을 위해 어플리케이션 스택은
Elastic Beanstalk 템플릿 적용/생성. DB 스택은 RDS 상에서 수동 생성
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
환경 재 구성
• 최종 개발 환경인 Docker 기반 ECS로 전환
• Code Star를 통해 구성한 Code Commit, Code Build,
Code Deploy 그리고 Code Pipeline을 직접 구성
Amazon ECR
Amazon ECSAWS
CodeCommit
AWS
CodePipeline
AWS
CodeBuild
AWS
CloudFormation
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
서비스 최적화를 위한 Architecture 제언
• Cloud 환경에 부합하는 서비스 확장성과 민첩성을
제공하기 위해 Architecture 변경 제언
• 1단계 : API Gateway 도입
• 2단계 : Amazon ECS를 AWS Lambda로 대체
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
Lessons learned
• 개발방법 + 사고방식 + 문화
• 도구 > 프로세스 >> 사람
Doing Agile?
Being Agile!
• 팀 단위 선도 적용 후 확산
• 기술/문화 충격 완화
One-at-a-time,
Not All-at-one
• 변화에 대한 수용
• 업무간 협업 강화
Open mind &
Collaboration
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
경쟁력 강화, 하지만 보안은 ???
개발(Development)
개발 및 배포 속도 개선
운영(Operations)
운영 안정성 개선
보안 (Security)
보안 강화???
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
DevSecOps : Security as Code
#!/usr/bin/env python
import re
middle_child = re.findall('[A-Z][^A-Z]*', 'DevSecOps')[1]
print middle_child
DevSecOps
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
DevSecOps 핵심 : 모두가 보안에 대한 책임
Network
Security
Front-end
engineer
Project
Manager
DB Admin
Application
Security
Product
Marketing
Test
Engineer
Support
Engineer
Product
Manager
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
보안, 지속적 통합/전달의 일부
전통적인 보안 적용
Plan Code Build Test Release Deploy Operate
보안 적용
보안 적용
Plan Code Build Test Release Deploy Operate
지속적 통합/전달의 일부
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
DevSecOps on AWS
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
OS 및 어플리케이션에 대한 호스트 기반 모니터링
• White-list 기반 접근 (Deny-all-by-default)
• 소프트웨어 패키지/ 로컬 사용자 계정 / 포트 오픈/ 프로세스 실행 시
사용자, 그룹 및 사용 포트 / OS와 어플리케이션 단의 구성 / 구성
파일의 예상되는 상태 계산
• 예를 들어 Apache 버전 2.4.29가 사용자 계정 “apache”, 그룹 “webapp”로
TCP/80과 TCP/443포트를 사용하여 실행 되어야 하고, 아파치 구성
파일에 대한 변경을 모니터링 수행
NW Ports Process User Group SW Package SW Version
TCP/80 &
TCP/443
httpd apache webapp apache 2.4.29
TCP/22 sshd ops ops sshd
- cphalod secops secops cphalo 4.1
: : : : : :
< / >
© 2018, Amazon Web Services, Inc. or Its Affiliates. All rights reserved.
당장 실행할 수 있는 것들…
1. 보안 담당자와 친해지세요!!
2. 현재 보안 상태와 요구 사항 이해
3. 멀티 팩터 인증(MFA) 사용
4. 현재 환경에 대한 보안 검증 계획 수립
5. 허니팟(honeypot) 구성
6. White-list 기반 제어
7. 모든 실행 계획을 자동화하세요!
TOGETHER(DevSecOps) WE LEAD THE WAY!
Q & A

On-Premise 기반서비스 클라우드 전환기 -DevSecOps 도입을통한 유연한 서비스 개발 및 운영::박준상::AWS Summit Seoul 2018

  • 1.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 박준상 메가존 On-Premise 기반 서비스 클라우드 전환기
  • 2.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 발표 순서 고객사 현황과 클라우드 서비스 도입 이유 TO-BE Architecture 어떻게 도입할 것인가? 개발 환경 구축하기 Lessons learned DevOps? DevSecOps!
  • 3.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. On-Premise 기반 모바일 서비스 개발 회사 • 제조/금융권 고객사 대상 서비스 개발 (모바일 웹/앱) • 인프라 : 고객사 D/C 내 장비 사용 • 소프트웨어 아키텍처 : 전형적인 3-Tier 구조 , 서비스 확장 시 동일 인프라 구성 필요 • 개발 환경 : RHEL + Java + Spring, Eclipse +Maven + SVN 사용 • 서비스 방식 : 모바일 웹 페이지를 native app으로 제공 (Hybrid 방식) WAS Web DB WAS Web L4 Storage 고객 데이터 센터 Apache Oracle Oracle EMC Cisco
  • 4.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 프로젝트 방향에 대한 고객 의사 결정 • Agile 소프트웨어 개발 방법 • DevOps 방식 서비스 개발 및 운영 환경 도입 • Container 기반 마이크로 서비스 아키텍처 도입 이미지 출처 : https://martinfowler.com/articles/microservices.html
  • 5.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 왜 클라우드 서비스를 선택하였을까 ? • 전사 DevOps 방식 Proto Type 프로젝트로 선정 • DevOps 방식 도입 시 Risk 확인 필요 • 프로젝트 성공 여부에 대한 불 확실성 Fail Fast Fail Early Learn Cheaply 고 비용 구조 개선 경쟁사 대비 빠른 서비스 출시 모 회사 및 고객사의 Cloud 위주 IT 투자
  • 6.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. TO-BE Architecture 구축 방향 Container 기반 서비스 고 비용 소프트웨어를 클라우드 최적화된 오픈 소스 소프트웨어와 서비스로 대체 지속적 통합 및 지 속적 전달을 통한 빠른 어플리케이션 배포 및 자동화 적용 서비스 Amazon Elastic Container Service Amazon Elastic Container Registry Apache Tomcat Amazon Auora AWS CodeCommit AWS CodeBuild AWS CodeDeploy AWS CodePipeline AWW CloudFormation
  • 7.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. TO-BE Architecture 구축 방향 Container 기반 서비스 고 비용 소프트웨어를 클라우드 최적화된 오픈 소스 소프트웨어와 서비스로 대체 지속적 통합 및 지 속적 전달을 통한 빠른 어플리케이션 배포 및 자동화 적용 서비스 Amazon Elastic Container Service Amazon Elastic Container Registry Apache Tomcat Amazon Aurora AWS CodeCommit AWS CodeBuild AWS CodeDeploy AWS CodePipeline AWW CloudFormation
  • 8.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 하지만… • 의사 결정이후 직면한 현실적인 문제들 클라우드 서비스 ? SVN= Yes Git = No Dev Only No Ops
  • 9.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. AS-IS TO-BE On-Premise Cloud monolithic microservices Infrastructure Interim#2 Interim#1 Architecture 어떻게 도입할 것인가? 고려 사항 기술/문화적 충격 완화 클라우드/DevOps 방식에 대한 이해도 증대 도입기 • Elastic Beanstalk + RDS + CodeStar • Interim #1 적응기 • ECS/ECR + RDS + Code Series • TO-BE 성숙기 • Lambda + API Gateway + Cognito etc • 서비스 오픈 이후
  • 10.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 1일만에 개발 환경 구축하기 • 2018년 2월 15일 Seoul Region 지원을 시작한 Code Star 사용 • 빠른 개발 환경 구축 및 AWS 환경 적응을 위해 어플리케이션 스택은 Elastic Beanstalk 템플릿 적용/생성. DB 스택은 RDS 상에서 수동 생성 AWS CodeCommit AWS CodePipeline AWS CodeBuild AWS CloudFormation AWS CodeStar AWS Elastic Beanstalk
  • 11.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 1일만에 개발 환경 구축하기 • 2018년 2월 15일 Seoul Region 지원을 시작한 Code Star 사용 • 빠른 개발 환경 구축 및 AWS 환경 적응을 위해 어플리케이션 스택은 Elastic Beanstalk 템플릿 적용/생성. DB 스택은 RDS 상에서 수동 생성
  • 12.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 환경 재 구성 • 최종 개발 환경인 Docker 기반 ECS로 전환 • Code Star를 통해 구성한 Code Commit, Code Build, Code Deploy 그리고 Code Pipeline을 직접 구성 Amazon ECR Amazon ECSAWS CodeCommit AWS CodePipeline AWS CodeBuild AWS CloudFormation
  • 13.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 서비스 최적화를 위한 Architecture 제언 • Cloud 환경에 부합하는 서비스 확장성과 민첩성을 제공하기 위해 Architecture 변경 제언 • 1단계 : API Gateway 도입 • 2단계 : Amazon ECS를 AWS Lambda로 대체
  • 14.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. Lessons learned • 개발방법 + 사고방식 + 문화 • 도구 > 프로세스 >> 사람 Doing Agile? Being Agile! • 팀 단위 선도 적용 후 확산 • 기술/문화 충격 완화 One-at-a-time, Not All-at-one • 변화에 대한 수용 • 업무간 협업 강화 Open mind & Collaboration
  • 15.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 경쟁력 강화, 하지만 보안은 ??? 개발(Development) 개발 및 배포 속도 개선 운영(Operations) 운영 안정성 개선 보안 (Security) 보안 강화???
  • 16.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. DevSecOps : Security as Code #!/usr/bin/env python import re middle_child = re.findall('[A-Z][^A-Z]*', 'DevSecOps')[1] print middle_child DevSecOps
  • 17.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. DevSecOps 핵심 : 모두가 보안에 대한 책임 Network Security Front-end engineer Project Manager DB Admin Application Security Product Marketing Test Engineer Support Engineer Product Manager
  • 18.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 보안, 지속적 통합/전달의 일부 전통적인 보안 적용 Plan Code Build Test Release Deploy Operate 보안 적용 보안 적용 Plan Code Build Test Release Deploy Operate 지속적 통합/전달의 일부
  • 19.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. DevSecOps on AWS
  • 20.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. OS 및 어플리케이션에 대한 호스트 기반 모니터링 • White-list 기반 접근 (Deny-all-by-default) • 소프트웨어 패키지/ 로컬 사용자 계정 / 포트 오픈/ 프로세스 실행 시 사용자, 그룹 및 사용 포트 / OS와 어플리케이션 단의 구성 / 구성 파일의 예상되는 상태 계산 • 예를 들어 Apache 버전 2.4.29가 사용자 계정 “apache”, 그룹 “webapp”로 TCP/80과 TCP/443포트를 사용하여 실행 되어야 하고, 아파치 구성 파일에 대한 변경을 모니터링 수행 NW Ports Process User Group SW Package SW Version TCP/80 & TCP/443 httpd apache webapp apache 2.4.29 TCP/22 sshd ops ops sshd - cphalod secops secops cphalo 4.1 : : : : : : < / >
  • 21.
    © 2018, AmazonWeb Services, Inc. or Its Affiliates. All rights reserved. 당장 실행할 수 있는 것들… 1. 보안 담당자와 친해지세요!! 2. 현재 보안 상태와 요구 사항 이해 3. 멀티 팩터 인증(MFA) 사용 4. 현재 환경에 대한 보안 검증 계획 수립 5. 허니팟(honeypot) 구성 6. White-list 기반 제어 7. 모든 실행 계획을 자동화하세요!
  • 22.
  • 23.