이 서평은 제이펍의 <IT 전문서 리뷰어 3기> 활동의 일환으로 출판사로부터 책을 제공받아 작성되었습니다.
클라우드는 이제 정확한 개념을 모르더라도 사용할 수 있는 일반적인 용어가 되었다.
원하는 시점에 원하는 만큼의 리소스를 사용하고, 사용한 만큼의 비용만 지불하는 클라우드 서비스는 시스템 설계의 자유도를 높여 주고 인프라 구축의 부담을 크게 줄였다.
이 책은 시간이 지나도 적용할 수 있는 클라우드 고유의 사고방식과 노하우를 제공한다. 클라우드 시스템의 개념부터 시스템 구축, 그리고 구축한 시스템의 장기적인 유지보수 방법까지 설명한다.
이 책 저자의 지인인 나카하라 도모야가 작성한 추천 서문에 따르면 “어떤 체제에서 도전하고 어떤 역할을 해야 하며 경영과 어떻게 연결하는지와 같은 질문들에 유일한 정답은 존재하지 않지만, 이 책에서 제시하는 내용들이 큰 힌트가 될 것”이라 확신한다.
시간이 지나도 적용할 수 있는 클라우도 고유의 사고방식과 노하우를 중심적으로 제공하며, PM이나 서비스 오너의 입장에서 쓰여졌다.
AWS Solution Architect - Associate
자격증을 가진 사람이라면 문제없이 읽을 수 있다.
클라우드 스탠다드 시대의 시스템 개발
1장 초반부에서는 클라우드의 기술적 특징을 다루고, 이어서 IT 업계와 시스템 개발에 가져온 변화를 분석한다.
클라우드 등장에 따른 시스템 개발 변화의 본질을 탐구하고, 변화에 대응한 개발 체제의 정비 방법을 고찰한다.
클라우드가 처음 등장했을 때는 컴퓨팅 리소스, 네트워크, 스토리지와 같이 온프레미스에서 구현할 수 있는 정도로 구성되어 있었다. 그러나 이후 다양한 서비스가 추가되고 업데이트가 빈번하게 이루어지면서 지금과 같은 모습으로 발전했다.
인프라를 중심으로 최종 사용자와 애플리케이션 등 벤더를 둘러싼 환경의 비즈니스가 급변했다. 예를 들어 기업과 클라우드의 관계와 상관없이,
- 하드웨어 벤더는 클라우드로 전환해도 기능을 이용할 수 있는 제품을 클라우드에 제공한다.
- 소프트웨어 벤더는 클라우드에서 즉시 간단하게 서비스를 시작할 수 있는 소프트웨어를 제공한다.
이러한 클라우드 벤더의 비즈니스 모델은 B2B2C 형태로 진화해 훌륭한 에코 사이클을 형성했다.
아키텍처링에 관한 사고방식
클라우드에서 이용할 수 있는 서비스의 특징을 올바르게 이해하고 적절한 것을 선정하는 것이 중요하다.
비즈니스 목적을 달성하기 위해 시스템 개발을 기획하려면 예산 확보 등 사전 준비가 필요하다. 이용할 기술이나 서비스를 선정하고 시스템의 전체 이미지를 결정하는 과정을 이 책에서는 아키텍처링$_{architecturing}$이라 부른다.
이 장의 초반부에서는 시스템의 아키텍처를 살펴보기 전에 아키텍처 패턴을 크게 세 가지로 나누어 정리한다.
- 모놀리식 아키텍처$_{monolithic \space architecture}$
- 서비스 지향 아키텍처$_{service \space oriented \space architecture}$
- 마이크로서비스 아키텍처$_{microservice \space architecture}$
한편, 클라우드 아키텍처를 고려하더라도 어떻게 접근해야 할지 모르거나 고려 사항에 누락이 없는지 불안할 수 있다.
이를 해결하기 위해 클라우드 시스템의 전체 이미지를 검토할 때 사용할 수 있는 사고방식과 참조할 수 있는 문서들이 있다.
장 마지막에 클라우드 아키텍처를 고려할 때 참고할 수 있는 모범 사례 자료를 소개한다.
클라우드 아키텍처링과 서비스 선정
클라우드에서 시스템을 구축한다고 해도, 만들고자 하는 시스템에 따라 특징은 물론 활용하고자 하는 클라우드의 장점이 다르다.
이 장에서는 시스템을 클라우드에서 구현하기 위해 클라우드 서비스를 선정하는 포인트에 대해 설명한다. 장 초반에는 대상이 되는 시스템을 크게 두 가지 패턴으로 살펴본다.
- 엔터프라이즈 계열 시스템
- 전자 상거래 사이트 또는 웹 애플리케이션과 같은 시스템
두 시스템의 비교를 통해 클라우드에는 절대적인 아키텍처가 존재하지 않고 시스템 특성별로 아키텍처를 고려해야 함을 알 수 있을 것이다.
시스템을 구축하면서 시스템이 요구하는 요건을 클라우드에서 실현할 수 있는지 판단해야 한다. 클라우드를 사용해 시스템을 만드는 것이 목적이 되면 클라우드의 장점을 살리지 못하고 온프레미스에서 구축하는 것보다 비용과 운용 부담이 늘어날 뿐이다.
온프레미스와 클라우드에서 만족할 수 있는 요건을 확인한 후, 어떤 방법으로 마이그레이션할 수 있는지도 알아본다.
비기능 요건 노하우
비기능 요건은 시스템을 안정적으로 가동시키기 위한 중요한 요소다. 비기능 요건을 올바르게 구현하지 않으면 시스템 장애나 보안 사고로 인해 사회적 신용을 잃을 수 있다.
이 장에서는 비기능 요건에 대한 사고방식이 클라우드 환경에서 어떻게 달라지는지에 초점을 맞춘다. 장 초반에는 계정의 종류를 정리하고, AWS 계정과 IAM 사용자 설계와 관련된 노하우를 설명한다.
시스템을 안정적으로 계속해서 작동시키기 위해서는 가용성 확보와 업무 지속성 계획에 기반한 재해 복구$_{DR}$ 전략이 필수적이다. AWS를 이용하는 경우, 가용성 확보, 백업 전략, DR 확보에 대해 자세히 살펴본다.
시스템은 구축 후에도 유지보수와 운용이 필요하다. 시스템 운영 중에 예상치 못한 부하가 걸리거나 애플리케이션 이상이 발생해 최악의 경우 서비스가 중단될 수도 있다.
장 후반부에서는 시스템 감시의 목적을 미리 확인하고, 클라우드 환경에서의 시스템 감시와 로깅의 핵심에 대해 설명한다.
클라우드 아키텍처링 포인트
지금까지 아키텍처링 노하우에 대해 알아보았다. 이 장에서는 그 노하우들을 가상의 시스템 요건에 적용해보면서 아키텍처링의 판단 포인트에 대해 알아본다.
책 5.1장에서 시스템을 가공의 요건으로 정한 다음, 그 요건을 바탕으로 5.2장에서 AWS 환경의 아키텍처링을 수행한다. 구체적으로는 AWS 계정에 대한 다중 계정 아키텍처, 백업/DR 전략, Auto Scaling 여부, 비용 관리와 절감 전략, 로그 보관 요건 구성을 결정한다.
장 마지막에는 결정한 아키텍처링을 기반으로 구축 방법을 결정한다. AWS의 리소스 설정 패턴의 장단점을 정리하며, AWS 리소스 설정 방법은 아래 세 가지 패턴이 있다.
- GUI를 이용한 수동 설정
- AWS CLI를 이용한 설정
- IaC 서비스인 AWS CloudFormation이나 하시코프의 테라폼$_{Terraform}$을 이용한 설정
다중 계정 아키텍처 구축
이 장에서는 AWS 계정의 취득부터 다중 계정 아키텍처를 구축하는 과정을 실습해본다.
전체적으로 다중 계정 아키텍처를 설계한 후, 전제가 되는 시스템 개요를 확인하고 등장인물을 정리한다.
AWS Organizations에서 OU를 설계하고 역할별로 AWS 계정을 배치한 후, 각 등장인물이 AWS 계정의 어디에 어떤 목적으로 접근하는가에 대한 정보를 기반으로 구성도를 설정한다.
장 전체 내용들은 실제 콘솔 화면을 캡처해 책으로 그대로 옮겼으므로 책을 따라가면서 천천히 실습을 진행하면 좋을 것이다.
클라우드 시스템을 안정적으로 지속시키는 방법
이 장에서는 클라우드에서 구축한 시스템을 안정적으로 지속시키기 위해 온프레미스에서 쌓은 경험을 계속 활용할 수 있는 부분과 클라우드 특유의 노하우에 대해 각각 설명한다.
클라우드라도 내부적으로는 물리적인 네트워크 기기나 서버가 존재한다. 물리 기기의 고장이나 폐기로 인해 이용자가 작동시키는 가상 머신이 정지할 수 있으며, EOL$_{end-of-life}$ 전에 업그레이드가 필요하다는 점은 클라우드와 온프레미스 모두 동일하다. 이러한 두 가지 환경 사이의 공통점에 대해 설명한다.
한편, 클라우드 환경은 자주 변화하며, 장점이자 단점이 될 수 있다. 예를 들어 AWS Support의 존재 등 온프레미스와는 다른 사고방식이 필요하다. 장 후반부에서는 클라우드만의 특징에 대해 살펴본다.
클라우드 시스템을 올바르게 평가하는 관점
시스템을 클라우드로 마이그레이션하거나 신규 구축한 후에는 시스템 도입에 따라 당초의 목적을 달성했는지 투자 대비 효과를 평가해야 한다.
이 장에서는 클라우드 시스템의 평가 관점에 대해 설명한다. 시스템을 개발하고 운영하면서 반드시 거쳐야 하는 관문 중 하나는 시스템 예산 확보이다.
장 초반부에서는 클라우드를 이용하면 왜 비용이 절감되는지를 인프라 비용을 포함한 인적 비용과 시간적 비용 관점에서 확인한다.
장 중후반부에서는 보안 관점, 운영 관점, 비즈니스 및 조직 관점 등 다양한 관점에서 시스템을 평가하는 방식을 소개한다.
클라우드의 장점을 살린 개발 사례
마지막 장에서는 필자가 요건 정의에서 운영까지 실시한 클라우드 개발 사례를 소개한다.
각각 클라우드의 장점을 살려 높은 가용성과 최소한의 투자로 DR 대책을 구현한 사례이다. 작게 시작하면서 필요한 최소한의 비기능 요건에 맞춰 개발한 사례도 소개한다.
총평
내용은 매우 좋았다. 아직 AWS 관련 자격증이 없고 프로젝트에서 잠깐 써봤던 나로서는 적당히 난이도가 있는 도서라고 느꼈다. 인프라적인 지식이 부족한 대학생이라면 다소 어려울 수 있지만, 좋은 내용이 많아 유익했다.
다만 아쉬운 점은 책 내 하이라이트가 너무 많아 읽는 동안 집중이 분산될 우려가 있다는 것이다. 컬러가 들어가 다채로운 그림을 구성한 부분은 좋았지만, 소제목뿐만 아니라 본문 글자에도 색이 들어가 산만해진 점은 개선이 필요해 보인다. 다음에는 하이라이트 빈도를 줄이거나 색이 들어간 부분을 조금 줄이는 것이 좋을 것 같다.
'Life > 독서 기록' 카테고리의 다른 글
[서평] 문제와 해설을 한 번에 - 이기적 정보처리기사 실기 핵심 600제 (0) | 2024.07.19 |
---|---|
[서평] 테스트 개론 - 프런트엔드 개발을 위한 테스트 입문 (0) | 2024.07.13 |
[서평] 노드 원리와 실무 가이드 - 업무에 활용하는 Node.js (0) | 2024.06.20 |
[서평] IT 업계 노하우 에센스 - 개발자를 위한 커리어 관리 핸드북 (0) | 2024.05.14 |
[서평] 프론트엔드 입문서 - 제로초의 자바스크립트 입문 (0) | 2024.05.13 |
컴퓨터 전공 관련, 프론트엔드 개발 지식들을 공유합니다. React, Javascript를 다룰 줄 알며 요즘에는 Typescript에도 관심이 생겨 공부하고 있습니다. 서로 소통하면서 프로젝트 하는 것을 즐기며 많은 대외활동으로 개발 능력과 소프트 스킬을 다듬어나가고 있습니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!