무엇을 공부했나요?
마지막 스터디 시간에는 제가 29장 유틸리티들에 대해, 30장 배포:PaaS를 요약하고, 연태님께서 심화를 준비하셨습니다.
29장 유틸리티들에 대해
유틸리티 모듈을 이용하여 앱을 최적화하기
공통으로 쓰이는 함수 혹은 클래스를 utils.py 모듈에 작성하여 캡슐화한다면 재사용과 테스팅이 수월해질 것입니다.
django.utils
django.utils 패키지는 유용한 헬퍼함수를 내장하고 있습니다. 하지만 대부분 장고 내부적인 이용을 목적으로 제작되었기 때문에, 사용하려는 헬퍼함수가 안정화 상태인지 확인하는 것이 좋습니다.
Django Utils 참고
예외
장고에서는 여러가지 예외처리를 제공합니다. 예외처리에 관련한 자세한 내용은 공식문서에서 확인할 수 있습니다.
직렬화 도구와 역직렬화 도구
장고는 데이터 파일을 생성하거나 단순한 REST API를 제작할 때를 위해 JSON, 파이썬, YAML, XML 데이터를 위한 유용한 직렬화, 역직렬화 도구를 제공합니다.
하지만 장고의 직렬화/역직렬화 도구를 이용할 때에는 언제나 문제가 발생할 수 있다는 것을 유의해야합니다.
가이드라인
- 간단한 데이터에 대해서만 직렬화를 한다.
- 데이터베이스 스키마의 변화는 언제라도 직렬화된 데이터와 문제를 일으킬 수 있다.
- 언제나 장고 폼 라이브러리를 이용하여 데이터를 저장하기 전에 확인 작업을 거친다.
30장 배포:PaaS
규모가 작은 프로젝트의 경우 PaaS(Platform as a Service)를 이용하여 많은 이득을 얻을 수 있지만, 절대 PaaS에 종속되지 않아야 한다고 당부합니다.
PaaS 선택하기
어떤 서비스를 사용하는 것이 좋을지 고민된다면 다음과 같은 항목들을 확인해보는 것이 좋겠습니다.
- 법적제약(각 지역별, 국가적 법적 요건을 충족하는가)
- 가격
- 가동시간
- PaaS 회사의 인력 배치(얼마나 충분한 지원을 받을 수 있는가?)
- 쉽게 스케일업 할 수 있는가?
- 문서화가 잘 이루어지는 서비스인가?
- 지리적 요건(PaaS 서비스가 위치한 곳과 서비스가 주로 사용될 곳을 고려하기)
- 회사의 안정성
PaaS로 배포하기
- 배포의 핵심은 개발환경과 상용환경을 최대한 동일하게 유지하는 것
- 배포 자동화로 사고도 방지하고 효율적으로 배포하자
- 스테이징 서버로 상용환경 배포를 테스트하자
- 백업과 롤백으로 장애를 대비하자
심화학습
심화학습 시간에 연태님께서 컨테이너 오케스트레이션의 개념과 필요성에 대해 이야기해 주셨습니다. 또한 컨테이너 오케스트레이션 도구 중 하나인 DC/OS를 소개해주셨고 다함께 실습을 해보았습니다.
여러 컨테이너의 배포 프로세스를 자동화하고 최적화하는 것이 컨테이너 오케스트레이션(Container Orchestration)의 목적입니다. 이러한 도구들 중 DC/OS는 Apache Mesos 분산 시스템 커널을 기반으로 하며, Marathon Framework가 결합되어 있습니다.
이미지 출처: Introducing open source DC/OS
DC/OS를 실습하면서 몇가지의 기능들을 살펴보았습니다. 리소스 분배와 로깅 등과 같은 데이터를 대시보드의 그래픽 요소들을 통해 직관적으로 확인할 수 있고, 패키지 관리를 버튼 클릭으로 손쉽게 진행할 수 있다는 점이 좋았습니다.
배포 라고 하면 아직까지 마음이 약간 쪼그라드는 초초보이지만, 8퍼센트에서는 배포가 자동화 되어 있기 때문에 저와 같은 주니어 개발자도 안전배포를 진행할 수 있습니다. (그래도 프로덕션 배포는 두근두근합니다.)
어땠나요?
길고 길었던 두숟갈 스터디의 여정은 이제 끝이 났습니다. 사실 지난 5개월간 외부인으로서 참여하면서 두숟갈 스터디가 끝나지 않았으면 좋겠다는 생각을 잠시 한 적이 있습니다. 그만큼 저에게는 의미 있고 아쉬운 시간이었습니다.
비록 스터디는 끝났지만, 그동안 스터디원들이 작성한 요약과 심화 자료가 남았습니다! 그동안 꼼꼼하게 보지 못했던 것들과 열심히 설명해 주셨지만 머릿속에서 휘발되어버린 것들을 차근차근 돌아보려고 합니다. 그동안 함께해주신 모든 분께 감사드립니다! 또 만나요!