테크데이즈 미니 토요세미나 발표자이신 송원석님을 미리 만나 보았습니다
안녕하십니까? 오늘은 최근 WebAPI 관련 문서를 한글화 하여 공개해 주신 송원석님을 모시고 이야기를 나누어 보았습니다.
김명신: 근황에 대해서 이야기 해주실 수 있을런지요?
송원석: 현재는 프로젝트에 투입되어 공통 모듈 개발 업무를 진행하고 있습니다. 최근들어 특히 정부 기관이나 관공서들을 중심으로 ActiveX의 사용을 자재하고 순수 HTML/JavaScript 기반의 브라우저 플랫폼을 요구하는 곳이 많이 있습니다. 이 과정에서 필요한 기술 자문과 더불어 공통 모듈 개발을 수행하고 있습니다. 어플리케이션에 대한 설계를 담당하시는 분들이 개발 환경이나 운영환경에 대한 이해도가 떨어지는 경우가 꽤나 있는데, 이 때 다양한 개발/운영 환경의 영향성을 파악해서 자문의 역할을 수행하고, 다양한 개발자들의 이해관계를 조율하고 업무적으로 재사용성이 있는 모듈들을 개발하여 실무 개발자들이 좀 더 빠르고 편하게 개발할 수 있도록 돕는 역할을 한다고 보시면 맞을 것 같습니다. 현재 진행 중인 업무는 대략 2년 남짓의 기간 동안 진행 중에 있습니다. 이 일을 본격적으로 시작하기 전에는 상당 기간 동안 전자조달 업무를 진행하기도 하였고, 싱가폴에서 개발업무를 진행한 경험도 있습니다. 사회에 발을 처음 디디고 국내에 정보통신 업계의 하도급 문화와 관행에 문화적인 충격을 느껴서 해외로 나갔던 것인데요, 싱가폴에 근무하던 회사도 한국계 회사이다 보니 큰 차이점을 느낄 수가 없었습니다. 결국 어디서 일하느냐 보다 누구와 일하느냐가 가장 중요하다고 느끼고 마음 편히 일하고 싶어서 한국으로 돌아 왔습니다.
김명신: 국내 SI는 정보통신의 꽃이라는 긍정적인 평가와 더불어 올바르지 않은 관행과 하도급 문화에 대한 지적도 있는 것이 사실입니다. 실제 상당기간 동안 국내에서 SI 관련 개발을 진행하시면 이에 대하여 이야기 해주실 부분이 있을까요?
송원석: 네, 실제로 제 경력에서 2년 정도를 제외하면 SI 개발을 해왔습니다. .NET 개발관련 업무도 많이 했었고 Java를 이용하여 개발도 많이 했습니다. 10여년간의 시간동안 정보통신 관련 기술들은 비약적으로 발전했음에도 SI 비즈니스는 고착화된 업무 관행과 추진 방식 등은 거의 변화되질 않았습니다. 가끔 듣는 외국의 사례와는 너무나 동떨어진 한국식 SI 비즈니스가 깊이 뿌리내리고 있다 보니 상대적으로 변화가 매우 더딘 것이 사실입니다. 이쪽 일을 하시는 분들은 누구나 공감하시겠지만, 하도급 계약으로 인한 폐해는 심각한 수준이고요. 합리적이지 못한 일정 수립과 저가 입찰, 개발자들의 자질 또한 큰 문제라고 하지 않을 수 없습니다. 일정이 다급하고 개발 비용이 빠듯하니 개발이 완료되었다고는 하나 테스트가 올바로 수행되지 않고 시스템을 오픈하거나 핵심 기능에 문제가 생기는 경우가 비일비재 합니다. 그렇다 보니 실제로 프로젝트는 개발인력이 철수한 그 순간부터 본격 시작이라는 말도 있습니다. 시스템을 오픈하면 이미 다른 프로젝트에 투입되어 있는 개발자에게 전화가 빗발치는 이유도 그러합니다. 국내의 경우 특별히 대규모 프로젝트가 수년에 걸쳐 한번씩 크게 진행되는 경우가 있는데, 이는 실제로 시스템이 개발된 이후로 수년간 변화되는 업무환경을 시스템이 따라가지 못하기 때문에 완전히 새롭게 시스템을 재구축하는 과정들을 반복하는 것이지요. 하지만 이러한 개발 문화가 실상은 상당히 한국적이라는 사실을 아시는 분은 많지 않으신 것 같습니다. 안타깝게도 현업에 종사하는 개발자로서 이런 구조가 쉽게 바뀔 것 같지 않고, 너무나도 한국적으로 토착화 되어 버린 것은 아닐까 하는 아쉬움이 있습니다.
김명신: 실제로 외국의 경우는 대규모 재개발 프로젝트 보다는, 프로젝트 완료 이후에 운영 과정에서도 지속적으로 개발을 하는 것으로 알고 있습니다. 우리나라에서 운영이라 하면, 주로 SE(System Engineering)나 operation을 중심으로 하고 있지만 실제로 해외 사례들을 살펴보면, 유지/보수 업무라는 것이 변화되는 업무와 시스템 사이의 간극을 메우기 위한 개발의 관점으로 유지/보수 업무를 진행하는 것으로 알려져 있습니다. 최근 들어 많은 분들께서 이야기 하시는 DevOps라는 트렌드가 자연스럽게 현업에 적용되고 있는 것이라고 보여집니다. 이렇게 지속적으로 유지/보수가 되다 보니 대규모 재개발이라는 것이 필요한 경우가 적지 않을까 생각합니다.
송원석: 실제로 개발 당시에는 객체지향의 장점을 최대한 활용하여, 유지/보수의 편의성이나 재활용성을 극대화 하기 위한 설계와 개발방법 등을 적용합니다. DI(Dependency Injection)이나 IOC(Invasion of Control) 컨테이너도 그러한 맥락에서 필수처럼 여기지는 경우를 많아 보았습니다. 그런데 실상은 프로젝트 완료로부터 차기 프로젝트가 진행될까지 관련 소스가 변경되는 경우는 거의 없어요. 단순 운영의 관점에서 소스를 건드린다는 것은 해서는 안 되는 불문율처럼 되어 있어요. 그래서 이 소스는 영원히 변경될 가능성이 전혀 없고 차기 프로젝트에서 참고만 해줘도 다행이라고 이야기 하시는 개발자들도 있습니다. 결국 변경될 가능성이 거의 없는 소스에 대해서 유지/보수의 편의성을 도모하여 개발한다는 것입니다. 문제는 이런 점을 고려하여 개발하는 것이 절대 공짜가 아니라는 점입니다. 설계나 구조도 복잡해지고 개발 시에도 공수가 더 많이 들어갈 뿐 아니라 수행 성능에도 긍정적인 영향을 주지 못합니다. 다시 한번 생각해 보아야 할 부분이 아닌가 합니다.
김명신: 수년간 IIS MVP로 활동을 하신 것으로 알고 있습니다. 새로운 버전이 나올 때 마다 새로운 기능이 추가되거나 구조가 변경된 경우도 꽤나 있었고 최근에 8.5가 출시되기도 했는데요, 매 버전이 출시될 때 마다 기술적으로 성숙되어 가는 웹서버의 모습들을 관심 있게 지켜보셨으리라 생각됩니다.
송원석: 실제로 IIS 4.x에서 5.x으로 넘어갈 당시에 공유 풀 모델이 추가되었는데, 저는 그 당시만 해도 새로운 기능으로 넣을 것이 많지 않아서 추가했나 싶을 정도의 의구심을 가졌었습니다. 그런데 6.x로 가면서 응용 프로그래밍 풀 모델이 나오고, 메모리를 공유할 수 있는 모델이 추가되더니 그 이후로 상당한 유용성을 가진 리사이클링이나, 웹가든, 웹팜등 다양한 모델이 기존의 변화의 연장선에서 기능 추가가 이루어지는 것을 보고, 오랜 기간 동안 장기적인 안목을 가진 개발자와 개발팀이 지속적으로 개선과 발전을 이루고 있구나 하는 느낌을 받았습니다. 이처럼 중장기적인 방향성을 가지고 제품을 발전시킬 수 있다는 것이 놀랍기도 하고 부럽기도 하더군요. 아무래도 제가 개발자이다 보니 IIS MVP로 활동하던 시기에 개발의 관점으로 IIS를 접근하였는데, 사실은 IIS를 대규모로 사용하시는 분들은 대부분은 운영자인 경우가 많더라고요. 당시에 그런 관점을 조금 더 이해하고 있었더라면 좀 더 좋은 활동들을 많이 할 수 있지 않았을까 생각이 듭니다.
김명신: 초중급 개발자분들이 저에게 간혹 물어보시는 질문 중에 닷넷을 해야 하나요? 자바를 해야 하나요? 혹은 저는 지금 닷넷 개발자인데 자바를 해야 하나요? 와 같은 질문을 하시는 분이 있습니다. 혹시 이런 질문을 받으신다면 어떤 답변을 해주실 수 있을까요?
송원석: 분야별로 차이가 많이 있으리라 생각합니다만. 웹 개발자의 관점으로 이야기 드린다면 어떤 언어나 플랫폼을 사용하더라도 일단은 하나의 언어와 플랫폼에 깊이 있는 내공을 쌓으라고 말씀 드리고 싶습니다. 그것이 자바이냐 닷넷이냐가 중요하다기 보다는 근간이 되는 기술에 대하여 깊이 있게 이해하는 것이 우선이라고 생각합니다. 웹 기반 기술은 결국 http와 같은 프로토콜을 근간으로 하는 모형입니다. 어느 회사가 만드는 솔루션이라도 이 범주를 넘어설 수 없지요. 그런 본질과 이론을 이해한다면, 무엇으로 구현하고 어떤 제품을 사용할 것인지는 차선의 문제일 수 있습니다. 실제로 현업에서 요구하는 기술 요건이 그렇게 높지 않은 경우라 하더라도 꾸준히 자기계발을 하다보면 동일한 일이라 하더라도 좀 더 효율적이고 성능이 좋은 코드를 개발하실 수 있으리라 생각합니다. 그리고 그런 분들이 더 많아졌으면 하는 바램이 있습니다. 10만 인력 양성의 이야기는 초급 개발자 10만을 양성하는 것을 목표로 삼는 것은 아닌 것으로 알고 있습니다. 이처럼 현업에서 경험과 숙련도를 가진 개발자가 많아지려면 그들이 일할 수 있고 활동할 수 있는 분야가 많이 많이 만들어져야 한다고 생각하고 있습니다.
김명신: 최근에 웹사이트 (https://www.egocube.pe.kr/)를 재오픈하신 것으로 알고 있어요. 저도 그 사이트를 통해서 WebAPI와 관련된 번역 문서를 접하였습니다. 번역문서 외에도 공을 드려 작성하신 문서들이 상당히 많던데, 웹사이트 폐쇄하셨다가 다시 오픈하신 이유가 있을지요?
송원석: 이 웹사이트는 2002년 정도에 처음으로 개발하여 오픈하였습니다. 그 당시에는 개발자라면 홈페이지 하나 정도는 있어야 하지 않을까 하는 생각에 시작을 했습니다. 처음에는 정말 열심히 강좌도 많이 썼습니다. 그런데 어느 순간부터 사이트를 통해서 들어오는 질문의 수준이 너무 높아서 제가 답변을 드릴 수가 없더라고요. 그렇다 보니 불성실한 답변만 하고 그랬습니다. 그러다가 웹사이트를 폐쇄하였었습니다. 그런데 최근에 사이트를 다시 오픈한 이유는 이렇습니다. 먼저 간혹 예전에 제가 사이트에 올려두었던 글이나 기사들을 찾으시는 분들이 계시더라고요. 그런분들께 여기를 보시면 내용이 있습니다 라고 말할 수 있는 공간이 없어져서 조금 답답했습니다. 그리고 간혹 해외 토픽 같은 걸 보면 1500년대에 누가 쓴 편지가 발견 되었는데, 거기에 이러저러한 내용이 있었다 라는 뉴스가 나오기도 하잖아요. 게다가 저희도 저희 선배로부터 그 시대의 고민꺼리와 이야기꺼리들을 술자리를 통해서만 듣곤 하잖아요. 저는 제 사이트의 내용이 설사 나중에 아무런 기술적인 가치가 없어진다 하더라고 그것이 하나의 기록문화이며 유산이 될 수 있다라고 생각했습니다. 노력해서 좋은 글을 올리려고 하였지만 그 중 일부는 아마도 잘못된 부분이 있을지도 모르겠습니다. 하지만 그 조차도 충분히 이야기거리가 될 수 있으리라 봅니다. 그래서 사이트를 다시 오픈하였고, 최근에는 주로 주요 기술에 대한 원문을 한글로 옮겨서 올리고 있고, 간혹 제 경험과 기술에 대한 내용도 포스팅을 할 생각입니다.
김명신: 최근에 개발관련 커뮤니티 활동들이 예전에 비해서 상당히 적어졌을 뿐더러, 그 명맥을 유지하고 있는 커뮤니티들도 많지 않은 것 같습니다. 혹시 개발 관련 커뮤니티가 이전처럼 성공적으로 활성화 될 수 있는 방법을 없을까요?
송원석: 예전에 커뮤니티 활동이 활발 했던 이유는 지식을 공유하거나, 묻고 답할 수 있는 채널로커뮤니티가 상당히 좋은 장소이었기 때문이라고 생각합니다. 그런데 최근에는 구글이 그 자리를 거의 대체하고 있다는 느낌이 들어요. 체계적이지는 않을지 모르나 구글과 같은 검색엔진이 마치 사전과 같은 역할을 하기 때문에 커뮤니티의 활용도나 가치가 그 만큼 하락한 것으로 생각하고 있습니다. 이런 이유로 개발관련 커뮤니티가 많이 사라지기도 하고 활동이 저조할 수 밖에 없는 것 같습니다. 커뮤니티가 유지되려면 단순한 질문/답변 창구가 아닌 그 이상의 가치를 가지도록 재편되어야 할 겁니다. 실제로 오픈 커뮤니티 채널보다 그들만의 감성을 공유할 수 있는 폐쇄형 커뮤니티 채널들이 각광을 받는 이유도 그 같은 이유가 아닐까 생각이 듭니다. 실제로 제가 운영진으로 있던 https://taeyo.net 과 같은 커뮤니티도 전성기에 비해서는 활동이 많이 줄어든 것은 사실입니다. 하지만 이러한 변화에 대응하기 위해서 수년전부터 루키 프로그램 등을 만들어서 수개월간의 전문 교육/개발 과정을 진행하고 있습니다. 커뮤니티의 이러한 변화는 어쩌면 당연하고 또 반드시 변화하여야만 유지될 수 있다고 생각합니다.
김명신: 장시간 인터뷰에 응해 주셔서 대단히 감사합니다. 이번 3월15일(토) 테크데이즈 미니 토요 세미나에 발표하실 “재사용 가능한 ASP.NET View 구성 요소 개발”에 많은 기대를 가지고 있습니다.
송원석: 네, 기존에 웹폼에서 사용하던 서버측 컨트롤의 높은 재사용성을 MVC에서도 그대로 유지할 수 있는 다양한 기법에 대해서 소개드리고자 합니다. 이 방법을 통해서 많은 분들이 재사용 가능한 구성요소들을 만드시는데 도움이 되었으면 합니다.
김명신: 감사합니다.