본문 바로가기

테크 이야기

닷넷의 완전히 새로운 웹 개발 환경이 온다.

닷넷 플랫폼에서는 작년 9월부터 vNext에 대한 소식들로 많이 달구어져 왔다. 이번 글에서는 ASP.NET5(vNext)의 출시 배경과 무엇이 달라졌는지 또 향후의 기대에 대해서 짧고 굵게 요약해 보겠다. 

왜 새롭게 바꾸었나? 

여러가지 이유가 있지만 먼저 자바와 닷넷은 이제 서비스 개발에 있어서 비주류의 분위기로 흘러 가고 있는 것에 있다. 물론, 국내만 이야기 하는 것은 아니다. 무엇보다도 실리콘 벨리의 스타트업들만 보더라도 자바나 닷넷의 안정성 이면의 무거운 웹 서버 환경을 선호하지 않고 있는 것이 추세이다. 즉, 서비스 개발에 있어서는 거의 Ruby on Rails와 Node.js 그리고 DJango정도가 주측으로 자리를 잡아가고 있는 것이 부인할 수 없는 현실이다.

MS도 S.I 환경의 엔터프라이즈 시장만 더이상 고수할 수 밖에는 없는 것이다. 과거에는 엔터프라이즈 마켓이 기술을 주도하는 것이 가능했다. 오픈소스가 열리기 이전에 기술을 드라이브하는 것이 IBM, MS, 오라클 등의 대형 벤더들이었기 때문이다. 하지만 이제는 IT 서비스 회사들이 오픈소스와 함께 기술 트렌드를 주도한다. 페이스북이나 트위터 이런 대규모의 서비스 경험이 있는 회사들이 자사의 아키텍처들을 소개하고 더불어 오픈소스를 확산한다. 그것이 곧 기술트랜드로 자리 잡히는 상황이다 보니 더이상 엔터프라이즈 환경에서는 힘을 쓰기가 어렵다.

MS 웹 개발자들이 다른 플랫폼으로 떠나는 것을 보고만 있을 수 없었던 것이다. 그래서 지금 웹 시장을 선점해가고 있는 node와 ruby의 트렌드를 따라서 그들은 다시금 asp.net의 방향을 새로하기로 결정했다. 그리고 닷넷은 vNext 소식이 들린지 두어달 만에 닷넷 오픈소스 정책을 세상에 공표했다.

마지막으로 MS는 클라우드 사업에 열두하고 있다. Azure가 나쁘지 않은 성과를 얻을 수 있었던 것이 기존의 닷넷 개발자들이 있었기 때문이라고 조심히 예측해 본다. 런던에서 닷넷 개발회사들만 보더라도 Azure를 사용했지 AWS를 사용하는 팀은 본적이 없다. 물론, 아직까지도 AWS와의 격차가 많이 크지만 만약 웹 개발 시장을 선점한다면 분명 그 마켓이 어떻게 될지 두고봐야할 것이다.

ASP.NET 5 어떻게 바뀌나?

먼저 크로스 플랫폼 개발 환경을 지원한다. 즉, 우분투나 맥에서 얼마든지 개발이 가능하다. 셀프 호스팅을 지원한다는 환경까지 놓고 봤을 때 node와 유사하다고 볼 수 있다. 실제로 싱글 스레드 기반으로 동작될지는 아직 내부 아키텍처를 까보지 않아서 이야기 하기 어렵다. 하지만 분명 node 이상의 속도를 보장하지 못하면 어필자체가 어렵기 때문에 더 나은 속도와 모델을 보장할 것이 분명하다. 그리고 node가 제공하는 non blocking 이벤트 기반의 프로그래밍 기법은 이미 C#5의 async/await 모델을 통해서 제공하고 있기 때문에 언어적으로도 큰 문제는 없다.

두번째로 현재 닷넷이 가지고 있었던 조금 산만해 보일 수 있는 버전들을 정리하기 시작한다. 예를 들어 WCF와 MVC 그리고 웹폼등 다양한 버전들이 산재해있다. 만약 내가 API 서비스를 만들고 싶다면 WCF의 웹API를 이용해서 만들수도 있고 MVC나 웹폼을 통해서도 만드는 것이 가능했다. 단지 차이가 있다면 개발 방법의 차이가 있는 것이지 IIS를 통해서 request와 response에 대한 액션은 거의 비슷하다. 


이런 개발환경을 새롭게 발표한 환경에서 동작할 수 있게 다시금 정리하게 되는데 ASP.NET MVC로 통합되어 제공 된다. 버전은 6이다. 

여러 변화들은 컴파일러 로슬린(Roslyn)을 통해서 주도한다. 가장 큰 변화는 기존에 컴파일 시에 dll 파일을 만들지 않고 메모리에 가지고 있다는 것이다. 닷넷 윈도우에서 사용되는 CLR 버전이 있고 크로스 플랫폼에서 사용하는 CLR이 따로 존재한다. 그리고 Owin이라는 표준 닷넷 인터페이스를 기반으로 하고 있기 때문에 낸시나 카타나 등과 같은 기존의 오픈소스 프레임워크들과도 시너지가 가능하다.

같이 소개되고 있는 Entity Framework 7 이라는 ORM에 대한 기대도 크다. 기존에 RDB위주로 지원을 넘어 Redis의 지원이 가장 눈여겨 볼 만한 부분이다. 물론, 엔티티프레임워크도 오픈 소스이기 때문에 향후 다양한 제품들 지원에 박차가 될 것으로 생각된다.


ASP.NET 5의 효과는?

기존에 윈도우 환경을 좋아하고 닷넷을 해온 사람들에게 또 다시 공부를 해야 한다는 이야기로 들려 그렇게 달가운 뉴스가 아닐 수 있다. 하지만 닷넷을 좋아하지만 리눅스 계열의 웹 환경을 쫓아야 했던 사람들에게는 더할나위 없이 좋은 소식이 분명하다. C#은 굉장히 완성도가 높은 언어이고 누구나 쉽게 배울 수 있는 언어이기 때문이다.

아직 preview 버전이고 알파 단계가 되는지 모르겠다. 하지만 이런 변화의 소식은 다른 플랫폼들을 고민하고 있는 닷넷 개발자들에게 무척 좋은 소식이다. 이전에 런던에서 일할 때에도 asp.net signalR과 Redis를 이용해서 게임을 만들었지만 결국 서버 성능상의 이슈로 node.js로 바꾼 적이 있었다. 적어도 이렇게 탈 닷넷화하는 현상은 생기지 않을 것이다. 

지금은 시장을 선점하기 어렵겠지만 2년을 조금 더 지켜보자고 이야기 하고 싶다. 물론, 국내 말고 세계적으로 봤을 때는 절대 의심의 여지가 없다. 닷넷이 다시금 어느정도 포션을 가져올 것은 분명하다. 하지만 국내는 몇년이 걸릴지는 아직 예측이 어렵다.


세계를 상대로 의심의 여지가 없는 이유는 간단하다. 세계적으로 굉장히 많은 닷넷 개발자들이 얼마나 많은가? 국내에서 3%도 안될 플랫폼 점유율이지만 세계적으로 봤을 때 못해도 30%는 될 것이다. 이렇게 많은 닷넷 개발자들은 바로 오픈소스의 자원들이다. 사용자의 요구사항에 대한 피드백을 받아서 특정 벤더가 그것을 분석해서 반영하는데 까지의 시간이 너무나 길다. 하지만 오픈 소스의 경우 다양한 회사들이 직접 수정하고 만들고자 할 것이고 그 나아진 모델을 제시하며 발전에 박차를 가할 것이다.

박경훈.