Serverless Computing

아키텍트를 개발하고 연구하는 사람들한테는 몇 년 전부터 들려왔던 버즈워드이지만 서비스 개발하는 사람들한테는 이게 뭔 마법의 단어처럼 막 이용되고 있어서…..

뭔가 좀 제대로 떠들어 주는 사람이 진짜로 별로 없어지고 있다.

거기에 아직도 구식 마인드를 가진 사람들은 하드웨어가 눈에 보여야지만 되는 마인드를 가진 분들도 많은지라…

서버리스 컴퓨팅을 이해하기 위해서는 클라우드 컴퓨팅에서 주로 이야기하는 IaaS, PaaS, SaaS에 대한 이해가 어느 정도 있다는 전재 하에서 말하는 FaaS(Function as a Service)에 대한 개념도 제대로 잡혀있어야 한다. 이것은 이제 사용자가 기능을 코딩하고 빌드, 배포 및 실행 단위로 만들어 쓰는 그 과정 자체가 복잡하지 않는 상태에서 해당 기능에 대한 구현을 위주로 하는 작업을 말한다. 그러나 이를 위한 모든 아키텍트들이 전부 뒤에 숨어서 보이지 않는, 즉 서버가 보이지 않는 구조를 이루고 있는 것이 바로 서버리스(serverless) 구조인 것이다.

Raghuram Sirish씨의 교훈적인 말이 있는데, 원 글은 기억이 안나고 지금 번역된 이야기를 하도 떠들어서 번역된 이야기를 기억해서 그 이야기를 적어보겠습니다.

“90년대에는 응용 프로그램을 작성하고 하드웨어에허 실행했습니다. 그 다음 사용자가 동일한 하드웨어에서 여러 응용 프로그램을 실행할 수 있는 가상 시스템이 출시되었습니다. 그러나 각 응용 프로그램에 대해서 본격적인 운영체제들이 실행되고 있었습니다. 그러나 컨테이너의 도입으로 가볍고 민첩한 운영체제의 중복성직 기능 및 프로세스 수준으로 격리되었습니다.”

라고… (이건 제가 원문 좀 확실히 뒤져서 수정하겠습니다. 꼭!)

좀 사설이 길어졌는데, 그럼 서버리스가 정확하게 뭔데? 라고 하면 클라우드 네이티브 컴퓨팅 파운데이션에서 정의한 백서가 있습니다.

“서버리스 컴퓨팅은 서버 관리가 필요없는 응용 프로그램을 작성하고 실행하는 개념을 의미합니다. 하나 이상의 기능으로 번들 된 응용 프로그램을 플랫폼에 업로드 한 다음 즉시 필요한 요구에 따라 정확하게 실행, 확장 및 요금 부과가 이루어지는 보다 정교한 배포 모델을 말합니다.”

라고 되어 있습니다. 즉, 서버리스에서 중요하게 생각하는 것은 사용자가 프로비저닝, 관리, 확장 측면에서 서버의 비용과 복잡성에 대해서 걱정할 필요 없이 응용 프로그램을 구축, 실행할 수 있도록 하는 환경을 말합니다.

그럼 서버는 없는 것이냐고요?

아닙니다. 서버는 존재합니다. 단지 숨어 있습니다.

어디에? 클라우드 속에 숨어 있습니다.

14fed4d8-cd85-4d8c-92c6-e929c15a4cb6.jpg

…..말장난 아닙니다. 저 용어 자체에 속으면 안됩니다. 우리는 여전히 서버들이 연결되서 서비스화된 인터넷 속에 살고 있습니다.

진짜로 중요한 것은 개발자가 개발을 위해 생각하는 것 외에 가치에 대해서 별도로 생각하지 않아도 된다는 것이 중요한 것입니다. 사실 클라우드 환경에서 제공되는 컴퓨팅이나 API 등도 이런 내용들이 있지만, 서버리스에서는 이 점이 기존 비즈니스 레벨의 관점까지 꿰뚫고 있기 때문에 더더욱 강조되어 이야기를 합니다. 기능 관리에 대해서 주로 걱정을 하는, 즉 비즈니스적인 가치를 중요히사는 기능에 대해서 주로 생각하면서 개발을 진행합니다. 대신 그걸 구축하고 하는 데 시간 할애하는 것을 막는 겁니다. 또한 스케일링 등의 관리 작업에 대해서도 자동화 되어 있기 때문에 이를 걱정하지 않는 겁니다.

그럼 이에 대한 관리는? 플랫폼을 제공하는 측에서는 이 플랫폼을 제공하기 위해 구축해놓은 서버가 있겠죠? 바로 이걸 관리하는 것입니다. 구글 클라우드 플랫폼, 아마존 AWS, 마이크로소프트의 애저 등의 공용 클라우드 오퍼링의 경우에 이것들을 관리하고 고객이 해당 기능에 대한 실행을 확인하고 청구하면 됩니다. 개발자는 이러한 서버들과의 프로비저닝이나 상호 작용에 대해서 걱정할 필요가 없는 사설 클라우드나 데이터 센터의 경우에도 각자의 팀이 존재해서 관리를 진행할 것입니다.

이 녀석이 왜 중요할까요?

이녀석에 대해서 이야기를 주로 하는 가장 큰 이유가 바로 FaaS입니다. FaaS는 이벤트 또는 http 요청에 의해 기능이 트리거되는 이벤트 중심의 컴퓨팅 환경을 제공합니다. 개발자는 이 이벤트 또는 http 요청에 의해 트리거되는 기능을 사용하여 응용 프로그램 코드를 실행하고 관리합니다. 또한 개발자는 작은 단위의 코드를 FaaS에 배포합니다. 이 코드는 서버 또는 기타 기본 인프라를 관리할 필요 없이 확장된 개별의 작업으로 보고 필요에 따라 실행하는 실행 단위화가 됩니다.

하지만 이 FaaS가 지금은 완벽한 단계가 아닌 상황인지라…. 이 녀석을 이용하는 가장 좋은 환경이 바로 이벤트가 발생했을 때, 어플리케이션이 실행해야 하는 기능으로 동작하는 것이 좋은 사례이다. 그러나 이러한 종류의 작업들에 대해서는 여러 가지 고려 사항이 발생하게 된다.

  • 독립적인 작업 단위로 구성되었을 때 비동기식, 동시성, 병렬화가 용이한가?
  • 스케일링 요구 사항에 예측할 수 없는 큰 차이가 있는 산발적 수요에 대한 대처가 되는가?
  • 무방비, 이회성, 즉각적인 콜드 스타트 여부
  • 속도의 가속에 대한 요구와 요구에 변화하는 비즈니스가 역동적으로 발생하는가?

어려운 것이다…;ㅅ;

그렇지만 서버리스 자체는 새로운 형태의 기술이자 패러다임이다. VM과 컨테이너가 앱 개발 및 배포 모델을 변화시켰던 것과 마찬가지의 수준으로 다가올 것이다. 또한 FaaS도 극적인 변화를 가져오는 요소가 될 수 있다. 단, 이것들이 아직 초기 단계이기 때문에 정확하게 알아야 한다. 안그러면 기존의 영역들에 대해 애매모호하게 묻혀서 이용될 것이다.

Advertisements

터보 버튼…

머나먼 옛날 옛적에 있던 버튼…

(사실 이런 거 쓸 생각 없었는데….)

나도 터보 버튼이 있던 컴퓨터를 어~~릴 적에 쓴 적이 있다. 근데 나야 뭐 그런 게 있어도 잘 몰랐으니 건드리진 않았고… 나중에 운영체제랑 시스템을 좀 제대로 공부할 때 “아 이런 게 있었구나”라고 하면서 대~충 넘어갔었다.

근데 오늘 트위터에 올라온 것 때문에 참…

 

내가 아는 거랑 뭐 더 다른 게 있나 해서 찾아보니 확실히 이상한 소리 있었다. 게다가 공감수가 장난이 아니다. 진짜로 이상한 글들 많아서…. 좀 정리해 보려고 한다.

터보 버튼은 말 그대로 성능을 올리는 버튼입니다. 근데 올리는 성능이 하드웨어만의 성능이 아닙니다. XT~486 시대까지 개발될 때에는, 프로세서 제조사들에 따라서 클럭 수가 다르게 나오는 프로세서들이 많았습니다. XT의 경우, IBM XT의 주력은 8MHz인데(8088), 이때에 같은 아키텍쳐의 다른 설계를 가진 프로세서들이 더 클럭수가 높은 프로세서들을 내놓기도 했습니다. 어디는 9, 12, 15, 16… 이런 식으로 클럭 수가 다른 프로세서들이 나와줬는데, 이걸 표준으로 맞춰서 처리해주도록 클럭을 제어해주던 녀석이 터보 버튼입니다. 이렇게 보면 클럭을 오히려 되려 낮춰주는 거 아니야? 하는데 초기에 저 정도의 클럭도 못따라가던 녀석들은 되려 클럭이 올라가기도 했습니다. 근데 대부분의 경우에는 클럭을 낮춰줬죠. 특히 기준이 되던 프로세서가 있으면 다른 고성능 프로세서 장착 컴퓨터들이 기준 프로세서에 맞추는 용도였습니다.

이 후에 나오는 프로세서들은 의미도 없지만 그냥 관행상 붙이고 다녔습니다. 그러다가 아예 없어졌죠.

근데 이 때에 컴퓨터를 이용하던 지금의 젊은(?) 사람들은 그 당시 게임 돌리기 바쁜 사람들이었기 때문에 이거 왜 있어 그러다가 터보 모드로 실행하면 되던 게임 안되고 해서 이거 뭐야 그러다보니 별 이상한 이야기들을 믿고 있는 경우가 있습니다. 그래서 좀 이해가 안되는 이상한 이야기들도 많고요…

그나마 좀 정상적인 이야기도 반 좀 넘게 있어서 다행입니다만….ㅠㅠ

근데 제조사들은 왜 이런 짓을 했을까요?

결론부터 말하면, 운영체제 및 프로그래밍 언어의 개발 부진이 당시의 원인입니다.

운영체제는 여러 하드웨어를 지원하지만, 초창기의 운영체제들은 기술들의 표준이 되는 시스템에 맞춰서 운영체제를 개발하였었습니다. 그래서 당시 주류였던 8MHz 시스템에 맞춰서 운영체제를 개발하였고, 해당 클럭 동작에 따라 시간을 재고 시간 처리를 하는 타이머 기능을 만들고 했던 여러 기능들이 그대로 C 언어의 라이브러리에 내장되어 있던 시절이 있었습니다. (지금은 안쓰입니다. 시스템의 시간에 관련된 기능은 이젠 표준화 되었기 때문에 쉽게 이용할 수 있습니다.)

이와 관련되어서는 다음과 같은 걸로 확인 가능합니다.

도스박스의 에뮬레이터에 보면 시스템 클락을 설정할 수 있는데, 이 부분 설정을 바꾸면 특정 프로그램 혹은 게임에서는 시간이 실제 시간과 다르게 동작하는 일부 프로그램을 볼 수 있는데, 이 프로그램들의 정체가 바로 특정 컴퓨터의 환경에서만 맞춰서 만들어진 프로그램들입니다. 그래서 타임 함수처리를 해도 클럭 차이가 나서 시간 차이가 생깁니다. 이때 당시의 프로그램들 중에는 이런 프로그램들이 상당히 많습니다. C 라이브러리를 어떤 걸 쓰느냐에 따라서도 여러 C가 존재했기 때문에, 그 언어들에 따라서도 라이브러리 내부 구현이 다른 것도 한 몫을 하죠.

요즘은 거의 신경 쓸 일도 아니기 때문에 그냥 넘어가는 경우가 많은데, 아직도 저사양 환경용 특수 목적 운영체제 개발하는 사람들은 클럭 컨트롤에 관해서 예전에 여러모로 있었던 일들이기 때문에 은근 민감하게 반응하는 편입니다. 그래서 터보모드라는 것이 은근 골때리게 알려진 것들도 많고, 이상하게 이해하는 것도 많죠.

오래전 컴퓨터들이 CPU 속도 조절과 관련되어 어떤 작업 형식을 이용하고 했는지는 오래된 운영체제 개발 문서들을 찾아보면 많이 나와있는 편입니다. The Linux Kernel의 맨 초창기 버전, 즉 리눅스 0.1 시절의 문서만 보더라도 이에 해당하는 이야기가 나와있는 편이므로 이해하는 데 있어서 어려움은 없을 것으로 보입니다. 근데 그정도 시절의 문서면 지금은 안쓰인다는 거죠.

게다가 이게 386, 486 때에는 그냥 관행적으로 넣은 기술이기 때문에 그닥 영향 자체가 있나를 물으면 미묘한 시기였고, 그 당시 업데이트 된 운영체제들은 클럭수가 무어의 법칙에 따라서 열심히 미친듯이 오르던 시기를 겪어야 했기 때문에 어느 정도의 대응을 하여 라이브러리들을 새로 짜서 썼기 때문에 “아, 이렇게 업데이트 되었구나” 까지만 알아도 좋을 꺼라고 생각됩니다.

다들 열공하죠. ㅇㅅㅇ/

김기창 교수가 불편한 사람들…

이런 말 될 수 있으면 별로 적고 싶진 않았는데…. 페이스북쪽에 보면 한국 IT인 연합회라는 IT인들이 제 목소리를 낼 수 있는 장소를 만들어서 정책 반영이나 정치인 지원을 할 수 있는지를 모아놓고 토론하는 공간이 있다. 학생들은 기웃거리기도 힘든 공간이다. 기본적으로 이슈가 되는 이야기들에 대해서 본인 생각 적어보고 하는 곳이라서 솔직히 말하면 그냥 어떤 이야기를 하던 그건 자유인 곳이다. 싸움만 안나면 되니깐…

 

공인인증서가 까이는 가장 기본적인 이유는 전자서명의 방식을 온라인에서도 이용하고 싶은데, 한국식 전자서명 방식을 이용하려면 “전자인감”이라는 제도를 만들어야 한다. 여기서부터 문게가 되는 것이다. 집에 보면 다들 인감 하나씩 가지고 있다. 이 인감을 컴퓨터에서 그대로 쓰고 싶은데, 이걸 x.509 v3 기반의 인증서로 만들고, 그냥 막 만들게 할 수는 없으니 행정부 보증하에 개인정보를 특정 발급자한테 발급받게 한다. 보증 주체는 당연히 은행, 보험회사들이고, 금융결제원 하에 발급이 되니 공적으로 공신력을 가진 파일이 만들어지는 것이다. 그래서 우리는 정부기관 일과 은행 업무, 쇼핑 등에 공인인증서를 통한 전자인감을 이용한다. (쇼핑하는 데 왜 인감을 찍어야 하는지는 묻지마라. 법으로 그렇게 만들어버렸다.)

자, 그럼 이 인감을 내 하드디스크 아무데나나 내 아무 USB 저장소에 저장한다. USB 저장소는 자꾸 망가지니 사람들이 하드에 저장한다. 내 개인음을 입증하는 파일을 내 하드에, 내 폰에 대충 저장한다? 저장소 위치는 누구나 다 알고? 게다가 보안이라고는 거의 전문지식 또한 없는 일반 사용자한테 예예만 선택하세요라고 오래전부터 가르쳐놓고는 이제와서 보안의 책임을 일부 내놓고? 게다가 이거 솔루션 제공하는 프로그램들이 털리거나 유사 프로그램 설치에 주의하라는 일들 미친듯이 터지는 마당에???

이 이야기를 솔직히 진짜로 하고 싶지 않았습니다. 보안에 대해서 별로 잘 다루지 않는 저라고 해도, 보안공학적으로 말도 안되는 이야기는 좀 까야지 될 거 같았는데, 그럴 이유가 생겼습니다. 아래의 주장들인데, 솔직히 공인인증서 찬성론자들의 말만 바뀐 주장인데, 스크린샷_2017-07-04_13-12-18스크린샷_2017-07-04_13-12-23

결론부터 말하면 반은 맞고 반은 틀린 이야기입니다. (그전에 기업호민관 출신이 맞는 소릴 한다는 이야기에 대해서는 질문 안받겠습니다.)

맞는 이야기가 될 수 있는 이유는 바로 한국 정부에서 발전시킨 방향에 대해서만 쭉 이야기 했기 때문에 맞는 겁니다. 실제로 지금 공인인증서가 없어지지 못하는 가장 큰 이슈가 바로 전자 서명입니다. 위에서도 잠시 설명했지만 또 적자면, 전자 서명 시스템을 한국식으로 맞춰서 인감 제도에 대해서 도입을 하게 되다보니 지금의 공인인증서가 이루어진 것은 맞는 겁니다. 그러니 당연히 이렇게 되죠. 한국식 서명제도의 기본은 인감인 건 다들 아실 겁니다. 그리고 그 인감을 개인이 가지고 있죠. 공인인증서 역시 마찬가지입니다. 거래에 쓰이면서도 개인이 개인의 PC에 저장하죠.

틀린 이야기라고 하는 것이 바로 이 한국식이라는 것만 강요해서 생기는 문제인 겁니다. 전세계적인 보안과는 맞지 않는 보안 방식을 만들었다는 거? 특허는 되겠죠. 근데 실제로 사용해보려고 하니 이런 저런 문제 다 터지는 겁니다! 집이 털려서 인감 털리면 답 없듯 PC 털려서 인감 도둑맞고 하는데도 그게 도둑맞은 거라는 걸 서류 내미는 곳에선 모른단 말입니다! 그리고 옛날엔 그걸 강조했다고요! 게다가 나중에 와서 이걸 자율화 시켜서 니들 맘대로 해라고 해도 공인인증서 이용하는 기존 제도 쓰면 면책될만한 법률이 얼마나 많은데 그걸 왜 바꿉니까!

라고 아무리 떠들어도 저 덧글 단 사람처럼 불편해 하는 사람 많습니다. 저런 분들은 대체 뭔 생각들일까요?

kisa.png

 

공인인증서 뒤에는 엄청난 이권 단체들과 사람들이 존재합니다. 제일 대표적인 식충이 쓰레기 단체의 이미지를 먼저 올리고 시작합니다. (욕 하고 싶으면 하라고 그래..) 그리고 그걸 지시하는 공공기관, 대대적으로 안전하다고 선포해대는 공공기관, 그걸 뿌려대는 업체들, 그리고 그거 땜에 보안으로 일해먹는 사람들 등등.. 당연히 많죠. 공인인증서가 얼마나 오래된 작품인데 저런 이권들이 없으면 말이 안되죠.

KISA의 공인인증서 찬양 수준은 진짜로 사이비 종교라고 해도 될 정도로 무시무시합니다. 저들 이야기 들어보면 그냥 컴퓨터 켜고 끄는 곳에다가도 공인인증서를 심어야 할 거 같은 생각을 하게 됩니다. 그정도로 사랑하고 공인인증서 없으면 대체 뭐하는 곳인지조차 모를 그럴 곳이죠. 지들이 인증한 곳에서 보안사고 났는데도 나중에 지들이 인증하는 시스템대로 구축 안했다고 까는 곳이 KISA이고, 거기 팀장이란 사람들은 대놓고 병신 소리 막 떠드는 곳이니깐요.

자, 이제 이 불편한 사람들이 대충 어떤 사람들인지 감이 오신 분들이 있을 겁니다. 그럼 이 불편한 사람들은 자기가 인생 살면서 단 한번이라도 공인인증서 땜에 보안 사고 안당했을까요? 그렇기 때문에 당당하게 이야기 할 수 있는 걸까요? 이 사람들은 피해자라는 것이 보이지 않는 걸까요? 피해 기사들도 보이지 않는 걸까요?

지들하곤 아무 상관 없습니다. 결과적으로 법 테두리 안에서 잘 진행되었으면 자기들 책임 아닌 겁니다. 대단한 사람들입니다.

엑티브 X 없애겠다고 다짐한 이번 정부의 행보에 대해서도 예외적인 곳에서는 exe를 사용하게 하겠다는 조항이 있었습니다. 100% exe로 전환될 것이고, 그 최전선에는 공인인증서 사용기관들이 있을 겁니다. 그럼에도 불구하고 여러모로 사고 터지고 난리나는 곳에서도 여전히 공인인증서를 가지고 있어야 하는지… 초딩도 알 수 있습니다.

p.s. 솔직히 걍 전통적인 한국인 종특을 가진 놈들이라고 말하고 싶습니다. 전 세계 어딜 가도 한국인들이 어디서 뭔 잘못했다가 외국인들한테 몰매맞는 짓 하고 돌아오면 외국에서 차별당했느니 뭐 어쩌느니 하는 식으로 어그로 끄는 짓꺼리랑 비슷하게 보입니다. 그거 땜에 MS가 한국 정부 요청 땜에 IE 랑 XP 고체 안하고 계속 버텨서 보안 업뎃 쭉 해주고 했던 그런 것도 있고.. 까고 까면 욕밖에 안나옵니다…