Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.

[Book] 클라우드 네이티브 인프라스트럭처:진정한 클라우드 네이티브 컴퓨팅 시대를 위한 아키텍처 패턴과 설계

이 책은 최근에 참여하고 있는 인프라 스터디에서 교재로 사용하면서 읽어보았다. 클라우드와 컨테이너가 대세가 되면서 인프라 관리에 대한 양상도 최근 몇 년간 많이 달라졌는데 그동안 소프트웨어 개발에 쌓인 경험이 인프라 쪽에 많이 적용되고 있다고 생각하는 편이다. 그래서인지 이런 류의 책은 책의 대상 독자가 이전에 인프라를 관리하는 사람과 개발자 두 가지 부류로 나누어져 있는 것 같다. 코드로 인프라 관리하기를 볼 때도 비슷한 느낌을 받았는데 인프라스트럭처에서 소프트웨어 개발 방법을 적용하는 부분은 너무 당연한 내용처럼 느껴지는데 이 책도 그런 부분은 비슷하다고 느껴진다.

전체적인 느낌을 얘기하자면 코드로 인프라 관리하기보다 훨씬 못하다. 사실 전체적으로 무슨 얘기를 하고 싶은 건지 잘 모르겠는데 책의 제목이나 내용을 보았을 때 특정 기술을 다룬다기보다는 클라우드 기반으로 바뀐 인프라스트럭처의 개념 혹은 앞으로 발전해야 하는 개념을 설명하고 싶어하지만 독자들이 특정 도구가 클라우드 네이티브라고 생각하지 않도록 특정 도구나 기술은 최대한 언급하지 않고 추상화된 개념만 설명하고 싶었던 것 같다.

하지만 너무 추상적인 개념만 얘기하다 보니 너무 뻔한 얘기처럼 들리고 핵심이 무엇인지 이해하기가 어렵고 내용이 빙빙 도는 느낌이다. 차라리 구체적인 예시와 함께 설명하는 게 이해가 더 좋지 않았겠나 생각하고 다 읽어보아도 "그래서 클라우드 네이티브 인프라스트럭처가 뭔데?"라는 궁금증만 남았다. 구체적인 예시를 제시하지 않을 거면 Twelve-Factor app처럼 개념이라도 구체적으로 얘기해 주면 좋은데 뻔한 설명이 많아서 나한테는 많이 도움은 되지 않았다.

크게 보면 클라우드 네이티브 인프라스트럭처가 무엇인지를 설명하는데 이는 Infrastructure as Code의 개념보다 하나 더 나아간 Infrastructure as Software의 개념으로 설명하고 있다. 내가 이해한 Infrastructure as Software는 Terraform으로 인프라를 관리하면서 서버와의 상태를 계속 맞춰주고 관리하는 소프트웨어가 있거나 Ansible Tower, Kubernetes와 비슷하게 느껴졌다. 특히 Kubernetes가 인프라 자체를 다 관리하진 않지만, 책을 읽다 보면 Kubernetes가 가장 Infrastructure as Software 개념과 맞아 보인다.

클라우드 네이티브 인프라스트럭처는 클라우드 네이티브 애플리케이션을 효과적으로 실행하기 위해 반드시 필요하다.

그리고 클라우드 네이티브 인프라스트럭처를 구성한다고 끝나는 것은 아니고 거기서 동작하는 애플리케이션도 클라우드 네이티브 애플리케이션이어야 한다고 하는데 클라우드 네이티브 애플리케이션의 설명은 더더욱 무슨 말인지 잘 모르겠다. 다른 애플리케이션과 클라우드 네이티브 애플리케이션이 정확히 어떻게 다른지 잘 이해를 못 했다.

클라우드 네이티브 애플리케이션은 플랫폼에서 실행되도록 설계되었으며, 이를 기반으로 회복성, 애자일성, 운영성, 관측 가능성을 갖추도록 설계되었다. 회복성(resiliency)은 장애를 막아내려 애쓰기보다 포용하며, 플랫폼에서 수행되는 동적 특성을 활용한다. 애자일성(agility)은 신속한 배포와 빠른 반복을 가능하게 한다. 운영성(operability)은 외부 프로세스와 모니터링 시스템에 의존하는 대신 애플리케이션 내에서 수명주기를 제어한다. 관측 가능성(observability)은 애플리케이션 상태에 대한 정보 조회 기능을 제공한다.

개인적으로 "클라우드 네이티브"라는 용어를 좋아해서 기대하고 읽었는데 약간은 실망했다. 물론 클라우드에서 인프라스트럭처와 애플리케이션을 관리하려면 어떻게 접근해야 하는지 전체적인 접근을 다루고 있어서 가볍게 읽는 정도로는 괜찮을 수도 있겠다.

2019/02/17 23:53 2019/02/17 23:53

기술 뉴스 #120 : 19-02-15

웹개발 관련

  • Google Play Store now open for Progressive Web Apps : 안드로이드 Chrome 72 릴리스에 Trusted Web Activity(TWA)가 포함되면서 PWA를 패키징해서 Google Play Store에 제출해서 사용자가 다운로드 받아 사용할 수 있게 되었다. 이 과정이 어떻게 진행되고 PWA/TWA의 특징이 잘 나와 있고(최근에 나온 정보라 이후 최신 정보도 거의 업데이트되어 있다.) 실제로 PWA를 스토어에 배포할 때 개발해서 주의해야 할 내용과 배포하는 과정까지 잘 나와 있다. 글이 긴데 PWA에 관심 있다면 참고하기 좋은 글이다.(영어)
  • mitmproxy를 활용해 구글 애널리틱스 테스트 자동화하기 : 테스트할 페이지의 GA 요청을 mitmproxy에 작성한 애드온이 분석해서 배포할 페이지의 GA 추적 코드가 원하는 대로 설정되어있는지 테스트한 방법을 설명하고 있다. GA 같은 경우 새로운 이벤트나 기능의 추적 코드를 잘못 지정하거나 이미 동작하던 트래킹 코드를 실수로 빠뜨리고도 나중에 발견하는 경우가 많은데 GA 추적 데이터를 많이 보고 있다면 사전 검토를 해보는 건 좋은 접근으로 보인다.(한국어)
  • HTTP/3 explained : HTTP/3와 기반 프로토콜인 QUIC에 대해서 설명하는 무료 이북.
  • Introducing React Hooks : React 1.6.8에 Hook이 공식 릴리스 되면서 공식 릴리스에서 바뀐 점과 Hook을 사용하는 방법을 설명한 글이다.(한국어)
  • 블로그를 만들며 고려한 것들 (JBEE.io) : 기본 블로그를 Gatsby 기반으로 마이그레이션 하면서 신경 쓴 부분과 만든 Gatsby 스타터 등 작업한 내용을 정리한 글이다. 글을 쓰기 쉽게 CLI 도구까지 만들어 쓰시는 점이 재미있다.(한국어)
  • How I added Dark Mode to my website : 웹사이트를 개편하면서 다크 모드를 추가한 과정을 설명한 글이다. 다크 모드 버튼을 눌렀을 때 로컬 스토리지에 이 값을 저장해두고 웹사이트가 열렸을 때 이 값을 확인해서 다크모드 활성화 여부를 결정하고 서버에는 보내지 않는다. 미디어 쿼리에 prefers-color-scheme 추가 작업이 진행 중이지만 여기서는 이를 사용한 것은 아니다.(영어)

그 밖의 프로그래밍 관련

  • 서비스 중단 없이 Amazon EKS로 옮긴 이야기 : AWS 서울 리전에서 매니지드 Kubernetes 서비스인 EKS가 들어오면서 기존에 kops로 운영하던 Kubernetes 클러스터를 무중단으로 옮긴 과정을 설명하고 있다. EKS의 특징과 제약사항들을 설명하고 무상태로 운영하던 Kubernetes의 서비스를 모두 EKS에도 설치한 뒤 Route53에서 일부 트래픽만 EKS의 로드 밸런서로 보내면서 테스트 한 뒤 이전 클러스터를 제거했다고 한다.(한국어)
  • [번역] Terraform을 활용한 AWS 람다 배포 : AWS Lambda Deployment using Terraform의 번역 글로 AWS Lambda를 배포하는 데 Terraform을 이용하는 방법을 설명한 글이다. 글이 초반에 Lambda 코드 테스트의 중요성도 강조하면서 좀 산만한 느낌이 있지만, Lambda 운영에 필요한 다중 환경, 암호화, CloudWatch를 이용한 warm-up, 매트릭 수집 등을 Terraform으로 설정하는 것이 글의 주요 내용이다.(한국어)
  • SemVer's New Maintainers : 소프트웨어 버저닝에 많이 사용하는 SemVer를 수년간 거의 혼자서 유지 보수했지만 그동안 바쁘기도 했고 미묘한 문구 차이로 인한 변경 등이 중요치 않다고 해서 놔두다가 더는 적합한 사람이 아니라고 생각해서 물러나기로 했다고 한다. 이번에 각 언어의 패키지 매니저 개발자들에게 연락해서 SemVer 팀을 구성하고 RFC 절차를 만든 후 SemVer에서 물러났다.(영어)

블록체인 관련

볼만한 링크

  • 3개월 차 주니어가 느끼는 나와 시니어의 차이 : 타다에 개발자로 3개월째 개발자로 일하는 분이 그동안 개발자로 일하면서 시니어 개발자와 자신의 주요 차이점을 정리한 글이다. 코드 자체보다는 설계와 관련된 부분이 많은데 아키텍처를 고려해서 영향을 미칠 부분을 사전에 고려하고 하위호환성을 유지하고 업무에 대한 관련 지식이 풍부하다는 점을 설명하고 있다. 글을 보아도 좋은 팀이구나 하는 생각이 들지만 3개월 만에 이런 내용을 다 파악하신 것도 대단하게 느껴진다.(한국어)
  • 2019 Programmers Report 프로그래머스에서 작년 12월 5천여 명의 개발자들에게 설문한 결과를 바탕으로 정리한 리포트이다. 프로그래머스의 채용행사와 연결되어 구직 조건 및 업무 환경에 대한 설문이 많이 있고 전체뿐 아니라 분야별로 어떤 차이가 나는지도 비교해 볼 수 있다. TDD나 CI에 대한 질문이 업계별로 큰 차이가 나는 점이 재미있다.(한국어)

IT 업계 뉴스

  • 정부의 SNI 필드 차단 기술 도입을 우려한다. : 정부에서 망사업자가 SNI를 이용해서 불법 사이트 접속 차단을 하도록 한 정책에 관해 오픈넷에서 올린 논평이다. 불법 사이트는 문제인 건 사실이지만 ISP 차원에서 HTTPS를 이렇게 감청하는 것은 미래 인터넷을 검열하는 문제로 커질 수 있어서 나도 반대하고 있다. 현재 청와대 국민 청원도 올라와 있다.(한국어)
  • HTTPS/DNS 차단 쉽게 이해하기 : 최근 KT가 SNI 감청을 통해 HTTPS를 통한 불법 사이트 접근은 차단해서 문제가 되고 있는데 이 감청이 어떻게 벌어지는지 이해하기 쉽게 잘 정리된 글이다. 개발 지식이 많지 않아도 쉽게 이해할 수 있도록 잘 정리되어 있다.(한국어)
  • Amazon cancels HQ2 in New York after backlash : Amazon이 뉴욕시에 두 번째 본사를 만들려고 하고 있었지만, 거주민과 국회의원들의 반발로 계획을 철회했다.(영어)

프로젝트

  • Git History : GitHub 저장소의 변경 히스토리를 쉽게 탐색할 수 있게 하는 프로젝트인데 UI도 깔끔하고 쉽게 비교해 볼 수 있어서 인상적이다.
  • TypeORM : TypeScript와 JavaScirpt에서 사용 가능한 ORM으로 MySQL, PostgreSQL, MariaDB, SQLite, MS SQL Server, Oracle, WebSQL 데이터베이스를 지원한다.
  • Quasar Framework : Node.js/Vue.js 기반으로 같은 코드 베이스로 반응형 SPA, SSR, PWA, 하이브리드 모바일 앱, Electron 앱을 만드는 프레임워크.
  • Bazel : Java, C++, Android, iOS, Go 등 다양한 언어를 지원하는 빌드 도구로 Google이 내부에서 사용하고 있다.
  • Comprehensive Python Cheatsheet : Python 치트 시트.
  • Public APIs : 무료로 이용할 수 있는 공개 API를 정리해 놓은 저장소.
  • FlexSearch.js : 브라우저와 Node.js에서 사용할 수 있는 풀 텍스트 검색 라이브러리.

버전 업데이트

2019/02/15 03:47 2019/02/15 03:47