메뉴 바로가기 검색 및 카테고리 바로가기 본문 바로가기

한빛출판네트워크

IT/모바일 >

시스템의 발전은 시스템 엔지니어의 발전을 필요로 한다

한빛미디어

|

2018-04-09

|

by James Turnbull

5,374

시스템과 사이트 신뢰성 엔지니어, 아키텍트, 애플리케이션 개발자는 산업의 변화와 제약조건을 충족하기 위한 새로운 전략을 수립해야 합니다.

 

지난 몇 주 동안, 우리는 처음으로 경력을 시작할 때부터 지금까지 기술 산업의 변화를 되돌아 보았습니다. 두 가지의 다르지만 중첩되는 분야, 기술과 방법론 분야의 변화를 살펴보았습니다. 우리 중 상당수가 처음 시작했을 때 작업한 시스템은 1세대 클라이언트-서버 애플리케이션 이었습니다. 이는 이전 세대의 메인 프레임이나 중형 시스템에서 실행되는 중앙집중식 애플리케이션에 연결하는 터미널과는 근본적으로 달랐습니다. 엔지니어들은 애플리케이션의 클라이언트 로직 뿐만 아니라, 서버의 로직에 대해서 강화해야 한다는 것을 배웠습니다. 연결성, 데이터 전송, 보안, 응답, 지연과 성능, 클라이언트와 서버간 상태 동기화는 시스템을 관리하기 위해서 고려해야 할 이슈가 되었습니다.

 

이러한 정교함의 증가는 시스템을 관리하기 위해 필요한 방법론과 기술의 복잡성에도 상응하는 변화를 가져왔습니다. 새로운 유형의 시스템은 새로운 기술, 새로운 도구, 프레임워크 및 프로그래밍 언어를 이해하는 것을 의미했습니다. 우리는 프론트 엔드 엔지니어, 백 엔드 엔지니어, 데이터 과학자, 디자이너, UX/UI 전문가 및 다른 수많은 전문분야와 같은, 예전보다 단일 역할에 집중된 수많은 새로운 전문분야의 출현을 되짚어 볼 수 있습니다. 우리는 또한 이 기간 동안 더 많은 단절된 기능들의 구축과 이러한 단절 사이의 전환의 복잡도가 증가한 것도 되짚어 볼 수 있을 것입니다. 이러한 단절은 데브옵스(DevOps)와 사이트 신뢰성 엔지니어링(SRE) 커뮤니티에서 오늘날 제거하려고 시도하는 것 입니다.

 

1세대 클라이언트-서버 시스템 이후로, 우리는 상당한 발전을 보았습니다. 등장한 기술이 주도한 많은 부분은 모든 산업에서 비즈니스를 수행하는데 중요한 역할을 했습니다. 이는 장치에서 사용 가능 할 수 있는 신속하고, 즉각적인 기능에 대한 고객의 요구와 결합되어, 서로 다른 지역 및 패브릭에 걸쳐 원활하게 제공됩니다. 모퉁이 비디오 가게에서 Netflix와 Hulu, 그들과 어깨를 나란히 하는 스트리밍 서비스에 이르기까지 비디오 대여의 발전을 예로 들어보겠습니다. 콘텐츠를 제공에 걸리는 예상시간이 몇 시간 또는 몇 분에서 몇 초로 단축되었습니다. 우리는 콘텐츠가 끊임없이(24x7x365), 소유한 모든 장치에서, 집과 사무실 그리고 이동하는 사이 어느 위치에서나 사용 가능할 것이라 기대합니다. 고객으로써 우리는 이를 제공하는데 필요한 인프라나 시스템의 복잡성에 대해서는 신경 쓰지 않습니다. 우리는 단지 제시카 존스의 새로운 시즌을 몰아보고 싶어할 뿐입니다.

 

반복되는 발전은 기술, 시스템, 변화시킬 기술을 구축하고 관리하는 스킬을 필요로 합니다. 거의 모든 경우에 변화는 더 많은 복잡성을 가져왔습니다. 클라이언트-서버 시스템과 비교하여 회복 탄력성, 낮은 응답시간, 높은 가용성을 요구하는 최근 분산 시스템을 관리하는데 필요한 기술과 지식은 굉장히 다릅니다. 그럼, 전에는 하지 않았지만 우리가 지금 알아야 것은 무엇일까요?

 

최소 실행 가능 제품 재정의

 

우리는 실무자로서, 더 잘 구축해야 했습니다. 가용성과 회복 탄력성을 주요 관심사로 하여, 어플리케이션의 최소 실행 가능 제품에 대한 정의를 다시 해야 했습니다. 좋은 설계 목표는 운영성, 보안, 성능, 관측 가능성에 대한 기준 아키텍처를 포함해야 합니다. React 컴포넌트를 다루는 프론트 엔드 엔지니어에서, 분산 데이터 저장소를 구축하는 백 엔드 엔지니어에 이르기까지, 모든 엔지니어는 시스템의 일부가 전체 시스템에 어떤 영향을 미치는지 고려해야 합니다.

 

이는 특히 사용자의 성능요구가 시스템에서 이용할 수 있는 연산 모델과 상태 관리전략에 대해서 새로운 제약을 만들었기 때문입니다. 사용자에 응답시간을 줄이기 위해 연산 모델은 서버리스와 에지 컴퓨팅 아키텍처로 전환하고 있습니다. 우리가 배운 새로운 교훈은 가능한 사용자 가까이에서 연산을 수행하는 것이 항상 효율적이라는 것 입니다.

 

이것은 또한 상태 관리에도 마찬가지 입니다. 어플리케이션은 처음부터 분산된 상태로, 공유 스토리지에 배포되고, 데이터(또는 일부 데이터 세그먼트)는 최대한 중앙에 집중된 저장소에서 에지와 클라우드로 이동합니다. 그러나 최종 사용자에 더 가까워 지는 것은 더 빠른 의사결정을 가능하게 하지만, 이 때 어플리케이션의 복잡성은 크게 증가합니다.

 

이러한 두 가지의 제약조건은 스택의 일부를 어떻게 다른 부분과 결합해야 하는지, 겉보기에 작은 변화가 전체 시스템에 미치는 영향을 엔지니어가 이해해야 할 필요가 있다는 것을 의미합니다. 그리고, 복잡하거나 시스템에 대해 통찰력이 부족하여 지적으로 모델링 할 수 없을 때는, 관측 가능성, 계측, 추적 그리고 테스트를 통해서 프로그래밍 방식으로 모델링 되어야 합니다.

 

우리는 이제 더이상 단순한 프로빙을 사용해서는 고장을 식별하거나 오류를 디버그 하기에 충분한 정보를 쉽게 제공할 수 없습니다. 복잡한 아키텍처와 분산된 상태의 어플리케이션은 검사할 때는 완벽하게 작동하는 것처럼 보여도 최종 사용자에게 최적으로 또는 정확하게 동작하지 않을 수 있습니다. 심지어 메트릭과 이벤트를 살펴볼 때도 서로 다른 시스템에 걸쳐 상관관계와 평준화가 요구되며, 전체 그림을 얻기 위한 전통적인 방식의 노력과 지연 시간 계산은 분산 시스템에서는 정확도가 떨어집니다.

 

어플리케이션의 계측은 이제는 개발 프로세스에서 필수 단계이고 더이상 나중에 생각할 것이 아닙니다. 모든 엔지니어는 시스템 관점의 상태, 성능 및 관측 가능성을 어떻게 분명히 할 것인지 고려해야 합니다. 이는 이런 특성을 제공하기 위해 기술을 개발하고 기법을 채택하는 엔지니어에게 필요합니다.

 

진화하는 기술 생태계

 

새로운 프레임워크, 아키텍처, 프로세스들과 활발한 생태계가 우리가 이런 과제들을 해결하는 것을 돕기 위한 도구로 등장했습니다. 일부는 초기 상태에 있지만, 빠른 채택은 빠른 성숙을 주도합니다. 우리는 이런 발전을 컴퓨터로 처리하는 것에서 보았습니다. 컨테이너가 메인스트림 기술이 된지는 불과 4년이 지났지만, 우리는 쿠버네티스와 같은 도구를 사용하여 복잡한 응용 프로그램 수준의 추상화 작업을 하고 있습니다. 유사한 발전이 배포, 서버리스, 에지 컴퓨팅 기술, 보안, 성능, 그리고 시스템 관측에도 나타나고 있습니다.

 

마지막으로, 인간과 조직의 공백에서는 어떠한 변화도 존재할 수 없습니다. 우리는 진정한 교차 기능팀을 구축하고, 시스템을 구축하기 위해 필요한 신속한 반복을 가능하게 하는 리더십 스킬을 개발해야 합니다. 단절을 끊어내고, 팀 간의 전환을 간소화하고, 개발속도를 향상시키기 위한 데브옵스(DevOps)와 사이트 신뢰성 엔지니어(SRE) 커뮤니티 활동을 계속해야 합니다. 고품질의, 안전하고, 성능이 뛰어난 어플리케이션을 신속하게 제공하도록 조직화된 팀은 매우 혁신적인 제품과 조직을 만듭니다. 

 

여정의 시작단계에 있거나 그 안에 있는 실무자와 조직을 위해, 오라일리의 벨로시티 컨퍼런스에는 기업들이 이런 현대적 복잡성을 탐색하는데 도움이 되는 프로그램 라인업이 있습니다. Google, Netflix, Microsoft, Amazon, Twitter, Nordstrom, Slack, 과 Fastly의 개발자와 엔지니어들이 분산된 시스템의 구축, 확장, 보안에 성공과 실패한 사례에 대해서 이야기 할 것 입니다. 여러분은 동료 및 업계 리더들에게 배우고, 교류하고, 웃고, 공유할 수 있는 기회를 얻게 될 것입니다. 산호세에서 열리는 벨로시티 컨퍼런스는 2018년 6월 11일에서 14일에 열립니다. 서두르세요, 최저 가격은 3월 30일에 마감됩니다.

 

*****

원문 : The evolution of systems requires an evolution of systems engineers

번역 : 김준환

댓글 입력
자료실