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도 극적인 변화를 가져오는 요소가 될 수 있다. 단, 이것들이 아직 초기 단계이기 때문에 정확하게 알아야 한다. 안그러면 기존의 영역들에 대해 애매모호하게 묻혀서 이용될 것이다.

터보 버튼…

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

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

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

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

 

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

터보 버튼은 말 그대로 성능을 올리는 버튼입니다. 근데 올리는 성능이 하드웨어만의 성능이 아닙니다. 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 저장소는 자꾸 망가지니 사람들이 하드에 저장한다. 내 개인음을 입증하는 파일을 내 하드에, 내 폰에 대충 저장한다? 저장소 위치는 누구나 다 알고? 게다가 보안이라고는 거의 전문지식 또한 없는 일반 사용자한테 예예만 선택하세요라고 오래전부터 가르쳐놓고는 이제와서 보안의 책임을 일부 내놓고? 게다가 이거 솔루션 제공하는 프로그램들이 털리거나 유사 프로그램 설치에 주의하라는 일들 미친듯이 터지는 마당에???

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

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

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

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

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

 

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

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

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

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

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

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

요구사항: 어디서나 지속적으로 사용 가능한 서비스

클라우드 환경으로 바뀐 지 오래되고나서부턴 서비스들이 어디서나 지속적으로 사용 가능한 서비스에 대해 거의 기본적으로 제공해주고 있는 것 같다. 거기에 한술 더 떠서 디바이스 간 경계가 많이 얇어지고 있다. (어디까지나 서비스의 입장이다.)

근데 아직 그런 게 전행되지 않는 서비스들도 많다. 좀 초창기에 나온 시스템들이 그런 것이 많은데, 서비스 개조에 개발이 어려운 것도 있지만 실제로 하려고 하는 마음이 있는지 좀 의심이 들기도 한다.

문서 작성 프로그램들의 경우에는 클라우드 저장 공간과 연동할 수만 있다면 어디서든 수정 가능하고 공유 가능한 상황이 되다보니 그냥 뭐 편하게 이동하고 있는 거 같다. 심지어 개발 환경까지 이루어지고 있는 판이니 이런 쪽은 이미 답 나왔다고 보여진다.

문젠 메신저들 같다. 어디서나 대화 내용을 불러오고 그 내용을 확인해서 지속적으로 대화가 이어질 수 있어야 하는데, 아직 그런 게 없는 메신저가 좀 있다. 구체적으로 말하면 바로 카카오톡. 라인도 텔레그램도 스카이프도 슬랙까지도 지속적인 대화 내용 제공은 요즘 다 되는 기능인 데다가 기종 간 대화가 그대로 이어질 수 없는 것, 심지어 아직까지 있는 기종 제한까지 겹치는 건 메신저로써의 기능으로써 절반 정도를 기능 상실하고 있다고 보여진다.

메일이나 아이디 가입이 우선이 아니라 휴대폰 번호에 의한 가입이다보니 더더욱 그런 거 같다. 전반적인 시스템들이 기존의 네이트온에 닮아가는 것도 솔직히 싫다만… 저점 카톡 버릴 이유만 들어나는듯.

극단적인 착각 – 알고리즘에 대한 과도한 칭찬과 과도한 멸시

개소리 오브 개소리 – CS Fundamental, 자료구조, 알고리즘 깊이 몰라도 된다는 개소리에서 적은 글이랑 성격은 비슷하지만, 좀 다른 이야기를 하고 싶다. 페이스북에다가도 똑같이 적었는데, 트위터로 날 접하는 사람들한테도 좀 들려주고 싶다.

알고리즘… 이게 언제부터 막 그렇게 거창한 거였나 싶었다.

그냥 단순 서비스 개발을 하면서도, 기술서에 나와있는 내용이나 기술 협의를 하면서 나온 내용에 대해서도 우리가 어떤 식으로 구현할 수 있을까를 머릿속에서 짜내는 것 또한 알고리즘이다. 그걸 수학적으로 풀어 써야지만 알고리즘이라고 한다면 프로그래머는 죄다 수학자여야만 하는 건가?

알고리즘을 공부하면서 생각의 폭이 넓어지는 것이지, 굳이 “정답은 하나입니다!”와 같이 정답만 찾아 헤메는 수능 공부를 하는 게 아니란 말이다. 별 것 아닌 생각으로도 상책을 내어 해결할 수 있다면, 굳이 복잡한 알고리즘 갖다 붙일 이유 또한 없는 거 현업에서 개발해본 사람이라면 누구나 다 안다. 오히려 조직 플레이를 잘 하라, 협업을 위한 기술들을 더 잘하자고 하면 더 하지. 근데, 뭔 문제 생겼을 때 해결하려는 수단 중 별 거 아닌 듯한 생각, 의외의 생각들이 있다. 그런 조금이나마 더 유연한 생각, 더 해볼려고 하는 노력에서 유연한 사고에서 나오는 거라는 것 정도는 이미 알고 있는 거 아닌가? 그거 땜에 조금이나마 더 오픈소스들을 보고 참고하고, 어느 정도의 구조적인 알고리즘까지 조금이나마 더 이해하려는 거 아닌가? 왜 그런 것 까지 싸잡아 무시하는 거지?

대학에서 알고리즘 수업을 수학적 증명이니 뭐 그딴 식으로 가르치는 건, 그냥 그 교수들이 그렇게 가르치는 것 뿐이다. (근데 그걸 맹신하는 일부 교수들이 있어서 문제.) 어차피 맨 첫 시간에 잠깐 이야기 한다. 아니면 알고리즘들 책 앞쪽 부분에도 똑같은 이야기들이 있다. “알고리즘은 문제 푸는 해결력을 높이는 데 필요합니다.”라고 적힌 책들 많다. 심지어 Art of computer programming에서도 나와있는 거지만 “프로그래밍 접근법에 대한 참고 내용입니다.”, “수학적 증명이 어려우면 그냥 넘기셔도 됩니다.”라고 나와있다. 단순히 생각 넓히기일 뿐이다.

근데 그걸 프로그래밍에 대한 일종의 종교적 믿음? 거기에 대한 불편함? 하. 그런 믿음, 그런 불편함. 인공지능 기술 이전에 이미 미친듯이 진행된 프로그래밍 자동화 기술들 갖다 들이밀면 단 한방에 무너질 믿음이다. “그럼 당신보다 이 자동화 기술이 더 발전하는 게 효율적이겠네요?”라고 하면 뭐라고 할 껀가? 그 툴 잘 쓰면 된다고 반박할껀가? 그런 레벨이면 이미 몸으로는 CRUD하고 있는 본인 스스로를 부정하고 있는 거나 마찬가지인 거다. 아니면 이야기가 너무 진행되었다는 식으로 회피하겠지.그런 불편함 또한 갖다 버릴 고정관념이다.

사실 알고리즘에 대한 경고는 일종의 미래에 대한 경고다. 생각이 굳어지는 그런 개발자들이 되지 말자는 거지 그게 뭐 “당신은 Art of computer programming에 나오는 문제 하나도 풀지 못하는 사람이니 개발 할 가치가 없습니다.” 라고 하는 그런 게 아니다. 그런 고차원적 수학을 요구하는 건 아니지만, 그렇다고 해서 그게 뭐 아예 수학을 못해도 된다고 직결되고 하는 그런 건 아니다.예상 외의 것일지도 모르지만, 이미 우리는 프로그래밍 언어를 공부할 때부터 필요에 의한 최소한의 수학적 사고를 같이 익히면서 시작한다. 그게 몇 년 단위로 계속 프로그래밍 언어 몇 가지를 써보고 하면서 본인 스스로가 모를 뿐이지. 그리고 그 정도의 사고도 못하면 다른 사람과의 협력 따윈 기대할 수도 없다.

알고리즘에 대해서 너무 극단적으로 몰고 가지 말자.

바이오, CloudReady를 버리고 윈도우 10을 업다.

맨 처음에는 윈도우 8을 가지고 있었고, 작업을 위해 Xubuntu를 설치했었고, 그리고 호기심에 CloudReady를 설치했고, 이제 다시 윈도우 10으로 돌리는 내 바이오…ㅇㅅㅇ

성능이 좋은 녀석도 아니다. 11인치에 AMD APU-E다. 샐러론 수준이다. 램 좀 늘려서 8G에 스스디 500GB 있는 게 장점이랄까..?

이런 성능도 좋지 않은 노트북으로 대체 뭘 하고 싶어서 계속 사용하느냐고 생각한다면…. 걍 일반적인 PC 기능에 가벼운 코드 보고 하는 정도이다. 3D 게임 만들고 하는 건 무리고…(전에 해봤다..)

하지만, 이런 낮은 사양을 사용하다 보면 확실히 느껴진다. 요즘 나오는 운영체제들은 점점 가벼워지고 있다는 걸…

그래서 아까 이 블로그에 Light-weight라는 글 쓰면서 이것저것 가벼워지고 있는 것에 대해서 생각해봤고…

데스크탑 환경이 xfce인 xubuntu도 적절히 최적화 되어 조금 더 가볍게 쓸 수 있어진다는 걸 이 노트북이 가르쳐줬고, 윈도우도 점점 버전 업 되면서 가볍게 사용할 수 있는 운영체제게 되고 있다는 걸 가르쳐준 것도 이 노트북이다.

당분간 윈도우 10으로 고생 좀 해봐라, 바이오. ㅇㅅㅇ

Light-weight

모바일 장치의 성능이 늘었다. 작업을 위해 웹을 주로 이용하는 경우가 증가했다. 씬 클라이언트들이 증가하고 있다. 기존의 프로그램들도 점점 가벼운 프로그램으로 바뀌고 있다. 기능이 많아지면 버려지는 프로그램들도 증가하고 있다. (프로그램의 많은 기능들을 전부 플러그인화 하여 원하는 것들만 설치해서 사용하는 것이라고 보면 쉬울 것이다.)

이것들은 이제 작은 작업에 대해서는 굳이 사양을 따질 필요가 없어지는 것이라고 봐도 될 정도이다. 아직 멀었다고 할 만한 환경들도 많지만 실제로 이용하는 데 있어서의 환경들은 눈에 잘 보이지 않는 환경으로 바뀌고 있고, 점점 가벼운 환경을 원하고 있다. 일단 운영체제부터 많이 가벼워지는 생각이 많이 든다. 사람들이 많이 이용하는 윈도우도 가벼워지고 있고, 맥도 점점 연결하려고 하는 것들에 비해서 약간씩 가볍게 하려는 것이 보인다. (근데 진짜 잘 안보이는 부분에서 작업하고 있다. ㅡㅅㅡ)

다만, 응용 프로그램들의 연구들은 반대로 무거워지는 경우가 많이 보이고 있다. 사실 표현하려고 하는 기능들이나 요즘 유행하는 응용 프로그램들이 점점 고기능의 연산을 하여 무거워지는 것이지, 처리해야 하는 로직이 무겁고 스파게티화 되어있고 한 수준이 아니기 때문에 별 신경 안쓰는 걸지도 모르겠지만… 그런 코드들도 기존의 프로그램들과 같이 무거워지고 꼬일 것이다.이전에 있던 프로그램들도 그 당시에는 잘 만들 것들로 시작했지만 기능이 늘면서 여러모로 꼬이고 꼬인 것이니….

이 제목에 대해서는 지금 잠시 잡소리 같이 되었지만… 중요하게 생각해야 할 문제일지도 모른다. 기회 되면 또 생각해봐야지….

Active X 보안 취악성? 이미 쓰지 말라고 하는데 뭘 또.

http://m.boannews.com/html/detail.html?idx=52522

보안뉴스에서 떠들던 기사다. 인터넷 뱅킹용 Active X 보안 모듈을 통해 악성코드가 유포되는 문제가 발성해서 금융권이 초 비상이란다.

근데 참나… 이제껏 악성코드 온상으로 한참이나 지목받던 기술이다. 신뢰할 수 있는 사이트? 진짜로 신뢰할 수 있는 사이트인지 아닌지는 서비스 제공자가 제대로 신뢰할 수 있도록 만들어야지 그걸 그냥 예예 거리면서 “신뢰할 수 있는 사이트에 추가해 주시고요, 물음 나오면 무조건 예 눌러주세요”란 식으로 대응하던 것들이 터지니 이제서야 난리? UAC 뜨면 UAC 끄는 기능들을 졸라 친절하게 알려주던 금융권 놈들이 이제와서?

Active X 때문에 여기저기서 문제 터지고 했던 건 여러모로 많이 봤으니 할 말은 없다. 뭐 컴퓨터 느려지고 이상한 프로그램 깔리고 성인광고나 도박광고 팝업 미친듯이 뜨고 악성코드 제거기를 가장한 악성코드 깔리고 했던 거에 Active X 쓰이고 했던 것들….

그렇다고 해서 지금의 exe 프로그램 깔라는 것도 욕나오는 짓이다만…

저렇게까지 해서 써야하는 저 공인인증 기술들에 대한 실체가 진짜로 궁금하다.

공인인증서 기술 오픈소스화 할 수 없나?

키보드 손목보호대의 중요성을 깨달음

사실 그전에는 손목 보호대 있어봤자 그냥 떼어버리기 바빴습니다. 이걸로 뭐 얼마나 도움 된다고 생각했죠.

그런데, 요즘 기계식 키보드를 주로 쓰면서 중요성이 팍팍 느는군요. 기계식 키보드들이 타이핑을 좀더 편안하게 하기 위해서 스탭 스컬쳐를 적용해서 제품이 나와주는 것들이 많이 생겼죠. 요즘은 맴브레인에서도 기계식과 유사하게 만들어지는 걸 많이 봤는데… 손가락은 편한데 반해 손목은 조절에 따라서 은근 불편하게 나온 것들이 많더군요. 키보드 두께가 두꺼워서 전체적으로 손목이 좀 꺾여서 타이핑을 쳐야 하는 그런 경우도 많이 보이고 하더군요. 잠깐 타이핑 하고 할 때에는 그냥 신경도 안썼는데, 요즘은 타이핑이 기존보다 엄청 늘은 데다가 손목 상태도 뭔가 좀 찜찜하네요. (것보다 몸상태가 다시 안좋아지는듯..)

그래서 키보드 손목보호대를 질렀습니다. 옛날에는 엘레컴에서 나온 것도 있고 펠로워즈나 다른 곳에서도 이런 저런 손목보호대가 많이 나왔었는데 요즘은 별로 없더군요. 제가 이번에 지른 것처럼 나무로 나온 것은 필코랑 스카이디지털에서 나온 것 뿐인데 필코껄 지를 주머니 사정이 아니어서 그냥 스카이디지털껄 질렀는데 은근 느낌 나쁘지 않군요. 타이핑이 많은 분들은 손목보호대 있는 것이 나쁘지 않을 거라 생각합니다.

해당 분야의 용어는 관심이 있다면 꼭 알아두자

사실 중요한 거 같지 않더라도, 해당 분야에 관심이 있다면 그 분야에 대해서 좀 더 하나 하나 알아갈 수 있는 것이 바로 용어다. 용어를 무시하면 안된다. 용어를 제대로 알아두는 것만으로도 개론을 하나 진행하는 것과 비슷한 효과를 얻을 수 있다. 괜히 기사, 산업기사 같은 곳에서부터 시작해서 자격증 시험이나 직업 적성관련 시험같은 자잘한 시험에 용어같은 걸 묻고 하는 게 아니라고 본다.

그럼 용어는 어떻게 익히는 게 좋을까? 개인적으로 이렇게 익혀두자는 것만 정리해보려 한다.

가장 간단한 건 지금 개발을 진행하고 있는 곳에 나오는 용어들 먼저 싹 다 정리하고 시작하자. 가령 지금 모바일 앱 개발에 대해서 공부하고 있다면 모바일 앱 개발에 이용되는 개발 환경에 대해서도 자잘한 용어가 있을 것이다. 프레임워크, API, SDK, APN, UUID 등등 여러모로 용어는 볼 수 있다. 또한 개발을 진행하면서 프로젝트 단위로 한다면 프로젝트를 진행하면서 나오는 용어들도 있다. 개발 방법론에 관한 용어들이라던가 협업을 위해 정의되어 있는 용어들 또한 이럴 때 익혀두고 사용하는 것이 가장 잘 익숙해지고 배워가는 방법이다.

그 다음에 나오는 건 뉴스나 화제가 되고 잇는 정보에 대한 용어들이다. 이런 건 뉴스 및 미디어를 통해서 관련된 내용들을 확인하면 그걸 하나 하나 찾아가면서 익히는 것이다.

마지막으로 전공 서적에서 중요로 하는 용어들이다. 이건 자기 전공에 관련된 내용을 얼마나 깊게 아느냐 마냐를 알 수 있는 가장 간단한 방법이기 때문에 여러곳에서도 많이 묻는 것이다. 알면서도 모른다고 할 수도 있겠지만 그럴 경우는 얼마 없겠고… (해봤는데 별로 좋은 인상은 안남는 듯 하다.) 내용이 정확하지 않다면 전공 공부를 제대로 했는지 아닌지를 의심해봐야 한다. 다시 봐서 제대로 익혀진다면야 상관 없지만 아예 처음 보는 거 같다면 자신이 학점 따기 위해 잠깐 공부하고 말았던 사람인지 아닌지를 의심하고…

이런 정도인 거 같다. 뭐, 보면 알겠지만 지속적으로 접하고 있다면 별 문제가 될 것은 없지만 항상 그럴꺼라고는 생각하진 않는다. 이것도 환경에 따라 진짜로 다르기 때문에…

근데 뭐, 용어에 대한 건 중요한 거니 하나 하나 자기의 블로그 등에 정리해서 익히는 것도 나쁘진 않을 것이다.