itsme2오늘은 APM(Application Performance Management) 시장에서 승승장구 하고 있는 제니퍼소프트의 정성태 님과 12월 주제인 C#에 대해서 이야기를 나누어 보았습니다.

김명신 :  최근에 C#책에 대해서 출간을 하셨지요? 분량을 보니 상당히 오랫동안 작업을 하셨을 것 같은데 얼마나 걸리셨나요?

정성태 :  약 1년이 조금 넘게 걸렸습니다. 원래 출판사에서는 500페이지 정도에 맞춰 달라고 했는데 욕심이 나서 결국 900여 페이지를 쓰게 되었습니다. 문제는 이게 교정 볼 때마다 900 페이지를 계속 읽어야 하는 바람에 3번 가량의 리뷰를 포함하니 기간이 길어졌습니다.

김명신 :  제니퍼소프트에서 주로 하시는 일에 대해서 소개해 주실 수 있을까요?

정성태 :  제니퍼소프트는 APM(Application Performance Management) 솔루션인 '제니퍼(JENNIFER)' 제품을 개발하는 회사입니다. 처음 2005년도에 개발되었을 때는 Java 플랫폼만을 지원했지만 2009년도에 제가 입사하면서 닷넷 제품도 지원하게 되었습니다. 그래서 닷넷 제품에 대한 성능 모니터링을 위해 최신 기술도 따라가는 한편 CLR 내부의 깊이 있는 부분까지 들여다 보는 것을 병행하고 있습니다. 그렇게 쌓인 지식들을 제니퍼 닷넷 제품에 녹여내는 것이 제가 주로 하는 일입니다.

김명신 :  제니퍼 제품이 해외에도 수출되고 있다고 들었습니다.

정성태 :  네, 현재 일본, 중국, 독일 및 동남아 쪽으로 발을 넓혀가고 있는 중이고 일부에서는 가시적인 성과도 보이고 있습니다. 사실, 여기에 제니퍼가 닷넷을 지원하게 된 이유가 있습니다. 닷넷 제품에 대한 요구가 2008년부터 있었다고 하는데, 재미있게도 국내가 아닌 제니퍼소프트의 일본 지사에서 요청한 것이었다고 합니다. 일본의 경우, 회사 내에서 단일 플랫폼으로 가져가는 것을 의도적으로 지양한다면서 거의 자바와 닷넷 플랫폼을 50:50으로 사용하는 곳이 많다고 합니다. 하나의 기술만을 사용하면 기술 종속적이 되거나 개별 기술의 성패에 따라 문제가 생길 가능성이 있기 때문이라고 하는데, 나름 합리적인 선택인 것 같습니다. 이 말을 들었을 때 국내 상황이 대비되었습니다. 잘 아시는 것처럼 국내에서는 전자 정부의 표준 프레임워크가 자바로 되어 있어 다른 업체의 기술들이 전혀 접근할 수 없게 되어 있습니다. 사실 Java가 오픈 소스/비용 절감, 기술 내재화 등의 요구로 많이들 사용하시고 계신 것으로 알고 있는데, 안을 들여다 보면 오히려 윈도우 라이선스를 능가하는 고가의 WAS 및 하드웨어 장비가 업체들의 이권과 부합해서 사용되는 경우도 종종 있다고 알고 있습니다.

김명신 :  실제로 글로벌 시장을 보면 웹 어플리케이션 개발에 사용하는 프레임워크로 PHP가 37%로 가장 높고, 두번째로 ASP.NET이 약 25% 수준이더군요. J2EE의 경우 약 4%수준인데 국내에는 글로벌 시장과는 많이 차이가 있는 것 같습니다. 회사에서 C#으로 개발하시는 부분이 어떤 부분인지요?

정성태 :  기본적으로 제니퍼소프트의 닷넷 버전은 C#으로 개발합니다. 그런데 정작 최신 기술을 쓰는 데에는 애로 사항이 좀 있습니다. 고객사의 상황이 아직 낮은 버전의 .NET Framework에 머물러 있는 경우가 많기 때문인데, 그래서 최신 기술 보다는 .NET 2.0/4.0에서 공통적으로 사용할 수 있게 C# 2.0 수준으로 낮춰서 개발을 하고 있습니다.

김명신 :  개인적으로 블로깅을 오랫동안 하셨지요? 저도 정성태님의 블로그를 항상 살펴보는 팬입니다. 얼마나 되셨습니까?

정성태 :  (http://www.sysnet.pe.kr) 원래 천리안에서 개인 홈페이지로 운영하던 것을 C#을 이용해 직접 sysnet 사이트로 만들어 옮겨왔는데, 아마 천리안 이력을 제외하고도 sysnet 사이트로만 거의 10년이 넘은 것 같습니다. 호스팅도 집에서 PC를 통해 운영했지만 잠자는 시간이면 컴퓨터를 꺼 두는 바람에 야간에 접속이 불가능한 경우가 많았습니다. 현재는 Windows Azure 클라우드 서비스에 올려 둔 상태라서 24시간 서비스가 가능해졌습니다.

김명신 :  블로깅은 주로 어떻게 하시나요? 꾸준히 올라오고 있는 편인데요.

정성태 :  블로깅을 이렇게 하는 것을 보고는 가끔 회사 일이 여유가 있어서 업무시간을 활용하는 것이라고 생각하시는 분들이 있는데, 그렇지는 않습니다. 회사의 정책이 하루 8시간 근무라서 그 시간에 업무를 보는 것만도 바쁘기 때문에 주로 퇴근하고 개인 시간을 할애해 글을 씁니다. 개인적인 공부를 하면서 정리를 해두는 목적으로 글을 쓰는 것인데, 예를 들어 어제는 "Visual Studio 2013 Virtual Launch"에서 에릭 감마가 발표한 "Visual Studio Online Monaco"에 대해 궁금했기 때문에 직접 체험하면서 글로 써두었습니다.

김명신 :  기존 "Team Foundation Service"가 Visual Studio online으로 녹아 들어 왔던데요. 이처럼 ALM 툴이 on-premise가 아니라 Cloud 기반으로 서비스 된다는 것에 어떤 장점이 있을까요? 개발자에게 추천할만 할까요?

정성태 :  ALM 툴이 클라우드로 이전한 것은 확실히 의미가 있습니다. 사내에서 형상 관리 서버를 이용하는 경우, 체계가 잡힌 대규모 회사가 아니라면 대부분은 그것의 설치부터 시작해서 관리까지 모두 개발자의 몫이 되는 것이 일반적입니다. 공감하시는 분들도 계시겠지만, 형상 관리 시스템에 대한 관리에 들어가는 시간도 때로는 만만치 않은 작업 공수에 해당합니다. 개발자들이라면 당연히 본연의 업무에 집중하고 싶어할 텐데요. 그런 분들에게 추천할만한 서비스로 손색이 없습니다.

김명신 :  요즘 인기를 끌고 있는 git과 Visual Studio online을 비교할 수 있을까요?

정성태 :  사실 git과 Visual Studio online을 비교하는 것은 어떤 면에서는 공정하지 않습니다. git은 소스코드에 대한 버전 관리를 하는 도구이지만 Visual Studio online은 소프트웨어 제품의 전체적인 형상 관리를 담당하는 도구이기 때문입니다. 일례로, Visual Studio online은 형상 관리 중 소스코드의 버전 관리를 git으로 바꿀 수 있는 옵션을 제공해 주고 있습니다. 그런 이유로 인해 ALM 전체를 말씀드리기는 어렵고요, 소스코드의 버전관리 수준에서 git과 Visual Studio online에 내장된 고유 버전 컨트롤을 비교해야 할 것 같습니다. 저도 git/github를 이용해 개인적인 오픈 소스코드를 관리하고 있지만 엄밀히 말해서 git의 소스코드 버전 관리 방법이 쉬운 편은 아닙니다. 초기 시간 투자는 물론이고 익숙해지기 위해선 보다 더 깊이 있는 전문성이 요구됩니다. 그에 비하면 Visual Studio online은 개발 툴과의 매끄러운 통합을 이뤄냈고, 계정 정보도 기존의 윈도우 라이브 계정을 연동할 수 있기 때문에 대단히 쉽다는 것을 장점으로 꼽을 수 있습니다.

김명신 :  빌드 자동화나 배포 자동화, 부하 테스트 등을 직접 구축하기 보다는 Visual Studio online 서비스의 경우 클라우드에 이미 구성되어 있는 것을 쓰게 되니까 상당히 괜찮은 것 같더군요. 5명까지는 무료이고, 그 이상인 경우에도 비교적 저렴하게 사용할 수 있도록 가격정책도 공개가 된 것으로 알고 있습니다. 그렇다면 회사에서는 TFS 같은 걸 쓰시나요?

정성태 :  제니퍼소프트의 경우 팀 별로 다릅니다. 제니퍼 자바 버전의 경우 SVN을 쓰고 닷넷 버전에서 TFS가 사용됩니다. 그 외에 별도로 이슈 트래커인 JIRA가 있습니다.

김명신 :  조금 다른 이야기를 해보죠. 2000년 초반/중반만 하더라도 C# 사용자들이 엄청나게 많았는데요, 최근들어 조금 주춤하는 경향이 있는 것 같습니다. 왜 그렇다고 생각하시는 지요?

정성태 :  아무래도 모바일 흐름에 늦게 대응한 것이 크지 않을까 싶습니다. 현재 마이크로소프트가 모바일 시장에서 몇번 시행착오를 하면서 안드로이드나 아이폰에 비해서 많이 밀린 것이 사실입니다.

김명신 :  그래도 정성태 님은 윈도우 폰을 쓰시잖아요.

정성태 :  네, 제가 노키아 윈도우 폰을 사용하고 있는데 공부 목적이기도 합니다. 이미 안드로이드 폰은 가족이 가지고 있어서 실습할 수 있지만 윈도우 폰은 제가 구매하지 않으면 실습을 할 수 없기 때문입니다. 이제 약정이 2달 남았는데, 약정이 끝나도 최신 윈도우 폰 8로 이어갈 생각입니다. 비록 공부 목적이긴 하지만 윈도우 폰에 대한 가능성이 여전히 남아 있고 나름 괜찮은 면도 있기 때문입니다. 한 가지 바람이라면 국내에서도 윈도우 폰이 공식적으로 출시되었으면 하는 것입니다.

김명신 :  최근 C# 5.0에 포함된 비동기 관련 내용들은 어떻게 보셨나요?

정성태 :  기존 닷넷 프레임워크에서 지원하던 APM(Asynchronous Programming Model), EAP(Event-based asynchronous pattern), TAP(Task-based Asynchronous Pattern) 방식에 비해서 획기적으로 문법이 쉬워졌습니다. 사용법도 간단하고 내부적인 구조도 상당히 매력적인 것 같습니다.

김명신 :  C#에 추가된 비동기 문법이 C++의 차기 버전에도 도입된다고 하니, 바야흐로 C#이 다른 언어의 발전에 영향을 미치는 주요 개발 언어가 되었음에 의심할 여지가 없는 것 같습니다. 단적으로 여쭙니다. 왜 C#을 하시게 되었나요?

정성태 :  현존하는 VM 계열 언어 중에 C# 언어가 표현이 가장 모던합니다. 정적 언어임에도 동적 언어의 장점들도 잘 녹였고, LINQ와 같은 함수형 언어 스킴도 자연스럽게 포함되었습니다. 게다가 그 동안 윈도우 운영체제 전용이라는 꼬리표도 점점 희미해져 가고 있습니다. 예를 들어, 최근 게임 업계에서 모바일 분야로는 거의 절대적인 강자로 떠오르고 있는 Unity3D에서 C#이 지원되고 있는데, 윈도우 전용의 한계를 벗어나고 있는 분명한 사례로 보입니다.

김명신 :  부연하자면, 국내의 경우 Unity3D 사용자의 90%가 C#으로 스크립팅을 한다고 합니다. 게다가 안드로이드와 iOS에서 돌아가는 앱을 C#으로 개발할 수 있게 만들어주는 제품을 개발한 Xamarin과 마이크로소프트가 최근 공식적인 파트너 관계를 체결하였습니다. 마지막으로 마이크로소프트에게 바라는 점이나 마이크로소프트가 이랬으면 좋겠다고 생각하시는 점이 있으시다면?

정성태 :  제가 소프트웨어 개발자이기 때문에 개인적으로는 소프트웨어를 돈을 받고 판다는 것이 저는 좋습니다. 폐쇄적인 라이선스 정책의 문제는 차치하고 순수하게 소프트웨어 그 자체가 가진 가치에 대해 비용을 지불하는 것에는 찬성입니다. 자신이 개발한 소프트웨어를 그 자체로 인정 받지 못하고, 광고를 매개로 소프트웨어를 무료로 사용하도록 하는 것은 개발자 입장에서 볼 때 썩 기분 좋은 현상은 아닙니다. 어차피 소프트웨어를 만들어 돈을 버는 것이 목적이라면 광고를 통해 들어오든 사용자가 사든 무슨 상관이냐 하는 분들도 계실 텐데요. 단적인 예로, 사무라이 칼을 만드는 일본의 장인이 그 칼날에 협찬받은 업체의 광고를 써 넣어서 무료로 나눠주는 장면을 상상해 보면 비슷할 것 같습니다. 칼이 물리적인 반면, 소프트웨어는 가상화되어 있다는 차이점이 존재하긴 하지만 소프트웨어 개발자로서 따져 보면 하나의 제품을 개발할 때 사무라이 칼을 만드는 것과 비교해 절대 뒤지지 않는 노력이 들어가고 있다는 것에는 다들 공감하실 것입니다. 마이크로소프트는 소프트웨어 장인들이 스스로 만든image 소프트웨어 가치를 판매하고 있는 몇 안 되는 회사 중의 하나입니다. 그래서 제가 마이크로소프트에 바라는 것은 하나입니다. 경쟁에 뒤지지 않기 위해 변화는 해야겠지만, 마이크로소프트가 그 동안 지켜왔던 소프트웨어의 가치를 끝까지 지켜갔으면 합니다.

김명신 :  마지막으로 12월에 있을 C# 세미나는 어떻게 이루어질까요? 얼마나 많은 분들이 참석했으면 좋을까요?

정성태 :  많은 개발자들이 최근에 많은 발전이 있었던 C#의 새로운 문법과 기술을 잘 모르고 있는 것 같습니다. 그래서 C# 2.0부터 C# 5.0까지 새롭게 추가된 구문과 실용적인 용례를 한방에 살펴보실 수 있도록 준비할 예정입니다. 딱 그 위치에 계신 분들이 빠지지 않고 오셨으면 좋겠습니다.

김명신 :  저도 비동기 세션을 열심히 준비하겠습니다. 감사합니다.

정성태 :  감사합니다.

테크데이즈 미니 토요세미나 안내