Anúncio

클라우드 춘추전국시대 서버 개발자 생존기

iFunFactory Inc.
9 de Dec de 2015
Anúncio

Mais conteúdo relacionado

Apresentações para você(20)

Destaque(20)

Anúncio

Similar a 클라우드 춘추전국시대 서버 개발자 생존기(20)

Mais de iFunFactory Inc.(18)

Anúncio

Último(20)

클라우드 춘추전국시대 서버 개발자 생존기

  1. 클라우드 춘추전국시대 서버 개발자 생존기 iFunFactory Inc. 장수원 sw.jang@ifunfactory.com
  2. 춘추전국시대?
  3. 출처: https://ko.wikipedia.org/wiki/%EC%B6%98%EC%B6%94_%EC%8B%9C%EB%8C%80
  4. 출처: http://www.meetup.com/fr/Expatriates-in-Paris/events/101742722/
  5. 생존?
  6. 출처: 영화 Cast Away
  7. 다루는 것 • 여러 종류 클라우드를 통합 관리할 때 • 만났던 문제점과 해결책
  8. 다루지 않는 것 • 클라우드 섞어 쓰기 (하이브리드/인터 클라우드) • 특정 클라우드 사용법 • (게임) 서버 만드는 법
  9. 춘추 전국 시대라고는
 했지만...
  10. AWS만 쓰면 안 되나요?
  11. 출처: Gartner: Magic Quadrant for Cloud Infrastructure as a Service, Worldwide 보고서, Lydia Leong 외, 2015년 5월 18일 발행
  12. AWS > 10 × 14 다른 클라우드 "AWS’s IaaS cloud is ten times larger than the next 14 competitors in the MQ combined!” 출처: http://www.networkworld.com/article/2925186/cloud-computing/gartner-amazon-s-cloud-is-10x-bigger-than-its-next-14- competitors-combined.html
  13. 그럼에도 불구하고 다른 클라우드가 필요한 이유?
  14. 지연시간
  15. AWS vs. KT ucloud biz round-trip시간평균(ms) 0 12.5 25 37.5 50 ping -c 30 11.16 ms 40.466 ms AWS Tokyo KT ucloud biz
  16. AWS Tokyo → KT ucloud biz 게임 서버 랙 해결
  17. 실시간성 + 지연시간 서비스 지역의 클라우드 필요
  18. 다만 ...
  19. 가격
  20. AWS vs. DigitalOcean 0 0.075 0.15 0.225 0.3 2 CPU,(3.75G/4G RAM),(별도/60G SSD) 4 CPU,(7.5G/8G RAM),(별도/80G SSD) US$0.119 US$0.060 US$0.276 US$0.138 AWS DigitalOcean
  21. 다양한 클라우드를 쉽게 통합 관리하려면?
  22. 클라우드 통합 관리 • 서버 인스턴스 및 인프라 생성 및 설정 • 서버 인스턴스 환경 설정 • 서버 인스턴스에 애플리케이션 배포
  23. 자동화!
  24. 변하는 것/변하지 않는 것 분리
  25. 변하는 것 / 변하지 않는 것 • 서버 인스턴스 및 인프라 생성
 ✖ 클라우드 벤더마다 API 상이 • 서버 인스턴스 환경 설정
 ✔ 운영체제가 같다면 클라우드 벤더에 독립적 • 서버 인스턴스에 애플리케이션 배포
 ✔ 클라우드 벤더에 독립적
  26. 멀티 클라우드 사용 전략 • 서버 인스턴스 및 인프라 생성 → 벤더 API • 서버 환경 설정 및 패키지 배포 → 단일화
  27. 다양한 클라우드 API
 동일한 인터페이스? 문제 #1
  28. Apache Libcloud https://libcloud.apache.org
  29. Apache Libcloud • AWS, Azure, Google Compute Engine 등을 포함한
 30개 이상의 클라우드 서비스 지원 • KT ucloud biz 지원 • 공통된 기능은 같은 인터페이스로 제공해 편리
  30. Libcloud 사용하면 OK?
  31. 클라우드 사업자 독자적
 기능을 지원하지 못 함
  32. 예 - AWS VPC • AWS VPC(virtual private cloud) 
 → 임의로 독립적인 네트워크 생성
 → Isolation • libcloud → VPC 생성/삭제 불가
  33. 예 - ucloud biz 로드밸런서 • libcloud 가 load balancer 인터페이스 제공 • ucloud biz 미지원
  34. libcloud 만으로는 부족
  35. 클라우드 구성 방식의
 미묘한 차이 문제 #2
  36. • AWS - 각 인스턴스에 security group 을 부착 • ucloud biz - 퍼블릭 IP 에 방화벽 룰 설정 예 - Access Control List
  37. 예 - 퍼블릭 IP 할당 • AWS - 인스턴스에 퍼블릭 IP 할당 • ucloud biz - 프로젝트에 퍼블릭 IP 를 할당하고 원하는 서버 인스턴스로 트래픽 포워딩
  38. 예 - 로드밸런서 • AWS - 별 다른 설정 없이 서버 인스턴스를 로드밸런서에 부착 • ucloud biz - 퍼블릭 IP 를 로드밸런서에 부착
  39. 생각보다 유사하지 않다
  40. 해결책 (#1, #2) • 기반 클라우드에 대한 지식 • 벤더 독자 API 를 사용하되, 전체 구성은 통일
  41. 지원하는 서비스
 범위의 차이 문제 #3
  42. 한번은 이런 일도...
  43. • 나: DigitalOcean 로드밸런서 서비스 연동해 주세요.
 (당연히 있겠거니...) • JK: DigitalOcean 에는 로드밸런서 서비스가 없는데요? • 나: 아. 네.
  44. 튜토리얼만 있을 뿐...
  45. 지원하는 서비스 차이 AWS ucloud biz DigitalOcean Instance 제어 및 관리 ✔ (❨Opsworks)❩ ✘ ✘ 로드밸런서 ✔ (❨ELB)❩ ✔ ✘ 데이터베이스 ✔ (❨RDS)❩ ✔ ✘ 캐시 서버 ✔ (❨ElastiCache)❩ ✘ ✘
  46. 당연히 AWS 가 제일 많다
  47. AWS만의 기능을 쓰면
 편하지만...
  48. • 고비용: 직접 설치해 사용할 때 보다 당연히 비싸다 • Lock-in: 특정 클라우드에 종속
  49. 특정 클라우드와
 죽어도 같이 죽고 살아도 같이 살기? 해결책 #3
  50. 가능한 범용적인 stack 사용 로드밸런서, RDBMS 서비스 → 직접 구성 가능 해결책 #3
  51. 해결책 - 예 • DigitalOcean 로드밸런서의 경우 • 서버 인스턴스 생성 + HAProxy(소프트웨어 로드밸런서) • API 는 동일하게 유지 • HAProxy 는 실제 운영중인 게임 서버에서 사용중(DNS RR 과 함께)
  52. AWS (ELB) ucloud biz 로드밸런서 DigitalOcean 서버 agent HAProxy API 서버 create remove add_instances remove_instances …
  53. 서버, 인프라 다 띄웠으니.. 서버 환경 설정!
  54. 설정 자동화 도구 사용
  55. 설정 자동화 도구 사용하려면... • 통합 관리를 위한 마스터 서버 설정 • 서버 인스턴스 추가
 → 해당 도구의 에이전트를 설치/설정 • 에이전트와 마스터 서버가 정상 연결
 → 모든 시스템 관리 작업은 마스터 서버를 통해 가능
  56. 에이전트 설치도 자동화
  57. CloudInit http://cloudinit.readthedocs.org/
  58. 클라우드
 시스템 서버 인스턴스 user-data 서버 인스턴스 생성 시 부팅 과정에서 CloudInit 은 해당 user-data 에 따라 서버에 다양한 설정을 해준다
  59. CloudInit 하는 일 • 패키지 저장소 추가 • 사용자 추가 / 삭제 • 최초 부팅 시 특정 커맨드 실행 • SSH key 설정 • 최초 운영체제 설치 시 필요한 작업 대부분
  60. 에이전트 설치 자동화 • 에이전트 설치 명령 + 마스터 서버 주소 설정
 → user-data 생성 • 서버 인스턴스 생성 API 호출 시 user-data 전달 • 이후 모든 관리 작업은 마스터에서
  61. 간단하게 끝날 듯 했으나 ...
  62. ucloud biz 에서 작동 안함
  63. 원인 및 해결 • CloudInit 벤더 제공 운영체제 이미지 설치 X • 해결 : 수동으로 이미지에 CloudInit 을 설치
 → 해당 이미지 사용
  64. 잘 작동하는 듯 하다가 ... 다시 문제 발생
  65. 원인 및 해결 • AWS 과는 달리,
 user-data 크기가 4KB 초과 되면 문제 발생 • 해결: 쓸데 없는 정보를 줄이고, 데이터를 압축
 → cloud-init 압축 지원
  66. 이후
 행복했을까요?
  67. 간헐적으로 문제 발생
  68. 문제 및 해결책 • github 의 ucloud biz Python 라이브러리가 ‘/‘ 를 잘못 인코딩해서 발생한 문제 • API 인자에 ‘/‘ 가 들어가는 경우만 발생
 (예: CIDR 주소: 0.0.0.0/0) • user-data base64 인코딩도 url safe 인코딩으로 변경
  69. 교훈
  70. • 라이브러리/도구가 있어도 잡다하게 신경 쓸 부분이 많다 • 충분히 써보기 전까지는 안 되는 거다
  71. 전체 그림
  72. AWS ucloud
 biz DigitalOcean Rackspace 통합 API 서버 대시보드 마스터 서버 ⋮ 에이전트
  73. 요약
  74. • 특정 클라우드와 동고동락하거나 • Libcloud 사용해서 제한된 기능만 사용하거나 • 벤더 API 는 활용하되, 통합된 시스템을 구성해서 • 다양한 클라우드를 편하게 사용합시다
  75. 감사합니다.
  76. Q & A sw.jang@ifunfactory.com
Anúncio