티스토리 뷰
출처: 지디넷 150716
자바 챔피언이 만난 비주얼 스튜디오 코드와 에릭 감마
먼저 필자는 마이크로소프트(Microsoft, 이하 MS)의 기술에 대해 잘 모르는 자바 개발자임을 밝힌다. 글을 읽으면서 오해가 없길 바란다. 사실 필자는 MS가 커머셜 소프트웨어와 심지어 개발자들이 쓰는 툴까지 판매하는 회사라서 나랑은 잘 맞지 않다는 생각을 가지고 있었다. 그러나 이번 빌드 행사를 통해 이런 고정관념이 바뀌게 됐다. 그에 대한 이야기를 풀어보고자 한다.
필자는 좋은 오픈소스 사용을 즐기고 필요하다면 직접 코드를 조금씩 수정하면서 이해해 가는 과정에 익숙하다. 그 때문인지 거의 결병증처럼 완성품을 판매하는 MS보다는 좀 더 개방적이고 개발자들에게 새로운 걸 공급하는 구글 같은 회사를 선호했다. 또 스프링 같은 오픈소스를 다루는 기업에 좀 더 끌렸고 관심을 가졌던 게 사실이다. 작년까지만 해도 필자는 MS의 에반젤리스트들이 MS 빌드(Build) 행사에 간다는 말을 그냥 한 귀로 듣고 흘려 보냈다.
그런데 빌드 2015 행사 전 유튜브를 통해 MS가 ‘홀로렌즈(Hololens)’라는 걸 출시했다는 소식을 듣고 환호성을 치고 말았다. 그리고는 빌드 2015 행사에 꼭 가봐야겠다는 생각을 했다. 마침 기회가 닿아 이번 행사에 다녀올 수 있었다.
MS 빌드에서 만난 뜻밖의 행운
솔직히 빌드에서 홀로렌즈를 제외하곤 큰 기대감이 없었다. 우선 MS 기술에 대해 잘 모르기도 했고 자바 진영의 유명 개발자가 아닌 MS의 유명 개발자를 행사에서 만난들 무슨 감흥이 있겠나 싶었다. 개발자 컨퍼런스를 온라인으로 볼 수 있음에도 굳이 사람들이 가는 이유는 방송되지 않는 곳에서 벌어지는 다양한 만남과 대화 때문이라고 생각한다. 정보는 온라인으로도 충분히 얻을 수 있다. 하지만 개발자들과 직접 대화를 해보면 정보의 깊이가 다름을 알 수 있고, 공개적으로 말하지 못하는 이야기도 간혹 들을 수도 있다. 이런 대화가 컨퍼런스 장소 여기저기에서 벌어진다. 물론 스피커들을 스토킹(?)하고 선물을 건네면서 환심을 사야하는 번거로움도 있지만, 나름 개발자 컨퍼런스의 묘미를 느낄 수 있는 알찬 이벤트이다.
그러나 처음 가는 행사에서는 이러기가 쉽지 않다. 우선 세션을 소화하는 것부터 상당한 체력이 필요하다. 기술적으로 잘 아는 걸 영어로 들을 때와 모르는 내용을 영어로 듣고 이해하려고 할 때의 부하는 2배 이상이다. 시차 때문에 졸린 몸에 생소한 기술을 듣고 이해하려는 부하가 더해지면 쉬는 시간이나 점심, 저녁 시간에 알찬(?) 정보 수집 활동을 하기가 쉽지 않다. 그나마 다행인 건 같이 간 일행이 실력 있는 IT 기자들이라서 사안에 대한 정리를 잘 해줬고, 김영욱 한국MS 부장이 부연 설명을 더해 잘 따라갈 수 있었다.
또 이번 행사에서는 매우 큰 행운을 만났다. 필자가 어린 시절, DOS 환경에서 터보C를 가지고 윈도우에 창 하나를 그리려다가 작성한 코드가 너무 많아 포기하고 비주얼 베이직을 만지작거린 때가 있었다. 그때 혜성처럼 나타났던 신전(?) 마크를 단 개발 툴이 있었으니, 그이름도 유명한 ‘델파이’였다. 당시 비주얼 베이직은 런타임(Runtime)을 탑재해야만 했었는데, 델파이는 놀랍게도 네이티브로 바이너리를 생성해 주었다. 여기에 더해 가공할 만한 컴파일 성능을 자랑하는 비주얼 툴이었다. 하이텔에서 델파이 강의를 진행한다는 글을 읽곤 학교도 빼먹고 용산으로 강의를 들으러 갔던 게 아직도 생생하다. 그런데 그 델파이를 만들고, MS에서 C#을 만들었던 전설을 빌드 행사장에서 보게 된 것. 전설이 된 프로그래밍 언어의 아버지 아네르스 하일스베르(Anders Hejlsberg)를 실제로 만나게 되다니! 정말 놀라지 않을 수 없었다.
JavaOne 컨퍼런스에서 괜찮다고 느꼈던 Typescript도 이 사람이 만들었다는 사실을 듣곤 또 한 번 놀랐다. 빌드 행사에서 이와 관련된 강의를 이 전설적이 인물이 왜 하나 싶었더니 역시 만든 사람이었다. 강의 잘 듣고 나가는 아르네스를 붙잡고 몹쓸 사진촬영을 요구했지만, 전혀 개의치 않고 같이 사진을 찍어줘 매우 고마웠다. 만약 마이크로소프트웨어에서 자바 기사를 읽지 않았다면, 지금쯤 델파이로 윈도우에서 개발을 하고 있었을지 모른다. 그만큼 당시 필자에게 확 와 닿았던 개발 툴이었다. 그런데 그런 그가 자바스크립트로 고민에 빠진 필자에게 또다시 Typescript라는 해법을 제시했다.
▲ [그림 2] 아네르스 하일스베르와 함께 찍은 사진
하여튼 전설과 같은 인물을 생각지도 못했던 장소에서 만날 수 있었다는 데 너무 감사했다. 아네르스 하일스베르가 만드는 거라면 결코 대강 만들지 않았을 거라는 기대감이 들었다. 이제 Angular2에도 탑재됐으니 Typescript를 더 열심히 봐야겠다.
우리 MS가 달라졌어요
나쁜 일은 꼭 나쁜 일이 터졌을 때 같이 몰려오듯이 좋은 일도 한꺼번에 오는 모양이다. 놀라움과 반가운 마음도 잠시, 2009년에 한국을 방문해 사람들을 술렁이게 했던 에릭 감마(Erich Gamma)가 스피커 명단에 있는 걸 발견하게 된다. 와우!
에릭 감마는 디자인 패턴을 쓴 전설의 ‘Gang Of Four(객체지향 SW 분야의 전문가 4인. Erich Gamma, Richard Helm, Ralph Johnson, Jone Vlissides)’가 아니던가. 또 자바 개발자 중 99%는 썼다고 봐야 할 개발 툴 ‘이클립스’의 창시자! 그런 사람이 MS의 개발툴을 만들고 있을 줄은 상상도 못 했다. 그가 이번에 들고나온 제품은 ‘비주얼 스튜디오 코드’다.
설마 비주얼 스튜디오가 맥용으로 나오나 싶어 철렁했다. 사실 자바 개발하는 데 있어 걸출한 개발 툴이 없는 것은 아니지만, 솔직히 비주얼 스튜디오만큼 강력한 개발 툴은 없다. 이런 상황에서 맥에서도 쓸 수 있고, 특히 자바 개발이 가능하다고 하면 안 쓸 사람이 몇이나 될까. 하여튼 비주얼 스튜디오가 통째로 올라간 건 아니라고 하니 인텔리제이(Intellij)를 결제한 사람들은 한시름 놔도 될 듯하다.
▲ [그림 3] 비주얼 스튜디오 코드를 소개했던 세션. 발표자 이름 중에 에릭 감마가 있다.
비주얼 스튜디오 코드는 기존에 개발자들이 알고 있던 비주얼 스튜디오와는 완전히 다른 제품이다. 멀티 플랫폼을 지원하는 코드 에디터라는 표현이 정확할 것 같다. IDE가 아니라 살짝 실망한 사람도 있을 수 있겠다.
필자가 멘토링을 하거나 알고 지내는 많은 스타트업의 개발 과정을 지켜보면 상당수는 안드로이드 앱이나 아이폰 앱을 개발할 때 이외에는 IDE를 거의 사용하지 않는다. 3~5년 전만 해도 스프링으로 백엔드를 개발하는 스타트업들이 꽤 많았다. 그러나 요즘 젊은 개발자들이 다수 포진한 회사일수록 스프링을 다루는 경우는 외주 이외에 찾아보기 어렵다. 파이썬 장고나 플라스크 등으로 백엔드를 개발하고 RESTful WebService를 개발하는 경우 node.js를 이용하는 개발자들이 많다. npm이나 Grunt 등을 커맨드라인에 처가며, 코드 에디팅은 빠르고 가벼운 sublime text 무료 버전을 사용하는 회사가 적지 않다. 그런 면에서 멀티플랫폼 코드 에디터로 비주얼 스튜디오 코드를 선보인 것은 개발 트렌드를 매우 잘 파악했다는 생각이 든다. 게다가 맥과 우분투 환경을 지원하는 점은 개발자 생태계를 대하는 MS의 자세가 크게 바뀌었다는 생각이 들게 했다.
비주얼 스튜디오 코드는 코드 에디터에 몇 가지 기능이 더해진 정도로 포지셔닝한다고 보면 될 것 같다. 필자와 같은 생각을 하는 개발자가 많다는 걸 MS도 알고 있었는지 비주얼 스튜디오 코드의 포지션을 설명하는 장표를 발표 당시 함께 공개했다. 아울러 비주얼 스튜디오 코드에 대해서도 [그림 5]와 같이 명확하게 정의했다.
▲ [그림 4] 비주얼 스튜디오 코드의 역할을 설명하는 슬라이드. IDE보다는 에디터에 가깝다.
▲ [그림 5] 비주얼 스튜디오 코드에 대한 정의
비주얼 스튜디오 코드에 대해 MS는 다소 유보적인 표현을 하고 있었다. “이걸 써라”가 아니라 “이것도 개발자들이 선택할 수 있는 코드 에디터 중 하나”라고 말이다. 이는 같은 포지션의 에디터들이 이미 존재함을 알고 있고 그 존재들에 대해 인정한다는 겸손한 표현이란 생각이 들었다. 하지만 프리뷰 버전에 불과한 비주얼 스튜디오 코드의 모습은 절대 겸손하지 않았다. [그림 6]의 표를 보면 그 말이 이해가 될 것이다.
▲ [그림 6] 비주얼 스튜디오 코드가 지원하는 언어들
비주얼 스튜디오 코드는 대략 20개 이상 언어의 구문 컬러링과 개발 편의성을 제공한다. 또 요즘 프론트엔드 개발자들이 백엔드를 작업할 때 많이 쓰는 node.js와 MS의 대표적인 프레임워크인 ASP.Net5 버전의 경우 런타임까지 지원하고 있다. 단순한 코드 에디터 수준은 아닌 것이다. 심지어 이게 프리뷰 버전이다. 마치 프리뷰 버전에서만 이 정도 지원하고 있다고 능력을 과시하는 것 같았다. 정말 빵빵한 스펙을 자랑한다. 김영욱 부장의 말에 따르면 비주얼 스튜디오의 최신 기능 중에 일부도 지원한다고 하니 신생 코드 에디터라고 하기에는 너무도 강력하다.
MS에서 이런 툴을 개발하려면 우선 자신들의 크로스플랫폼 자산인 모노를 기반으로 만들었을 거라고 생각했다. 그러나 이런 필자의 예상은 와장창 깨지고 말았다. 겉으로 보기에는 비주얼 스튜디오였던 비주얼 스튜디오 코드는 오픈소스 진영에서 고이고이 잘 자라고 있던 Electron을 기반으로 만들어졌다고 한다. 이 또한 필자에게는 생경한 MS의 모습이었다. 물론 MS도 오래전부터 코드를 공개하고 많은 프로젝트를 코드 저장소에 공유해 왔다. 하지만 정식 출시하는 제품에 대해 오픈소스를 사용했다고 이처럼 적극적으로 발표하는 것은 낯선 풍경이다. 제품의 업데이트도 역시 Squirrel 등의 오픈소스를 사용하며, FirstMate 등을 이용해 Syntax를 지원한다고 한다.
▲ [그림 7] 비주얼 스튜디오 코드는 Electron을 기반으로 만들어 졌다.
발표를 듣는 내내 오픈소스를 적극 활용하겠다는 방향성에는 쉽게 적응했는데, MS가 그렇게 하겠다는 데에는 영 적응이 안 됐다. 그렇게 이상한 체험을 하다가 달라진 MS를 자연스럽게 받아 들이기 시작했다. 키노트에서 환호성을 치다가 이후에는 당연스럽게 이런 놀라운 변화들을 받아들이게 됐다. 지금 당장 개발하는 언어를 바꾸기는 쉽지 않겠지만, 회사 서비스를 개발할 때 한번쯤 사용해 보고 싶다는 생각이 많이 들었다. 특히 오피스 같은 서비스는 예전 회사에서도 꼭 활용하고 싶었던 제품이었는데, 이제 API가 거의 다 열렸다고 봐도 될 정도로 공개의 수준과 활용성이 커졌다. 시연한 데모 대부분이 이런 서비스에 접근해 서비스를 만드는 데모였다. 이런 데모는 거의 비주얼 스튜디오나 비주얼 스튜디오 코드로 진행됐다.
▲ [그림 8]비주얼 스튜디오 코드의 실행 환경
비주얼 스튜디오 코드의 구조를 살펴보면서 한 가지 더 느낀 부분은 확장성이 무척 좋은 구조라는 점이다. 어댑터와 서버가 추가될수록 비주얼 스튜디오 코드는 성장을 거듭하는 구조로 돼 있다. 이런 툴 서비스 구조라면 외부의 개발자들이 플러그인 같은 생태계에 참여하기도 쉬울 것이다. 이클립스에도 플러그인 생태계가 있었지만, 그 나름의 체계와 구조에 대한 러닝커브가 적지 않아 포기하는 경우도 많이 있었다. 비주얼 스튜디오 코드는 에디터와 Json으로 통신하는 구조다. 웹에서 API 서비스가 단말들과 통신하는 방식이랑 별반 다르지 않다. 이런 단순한 구조라면 개발자들이 쉽게 생태계에 참여할 수 있을 것이다.
에릭 감마와 사진 한 장 찍고 약속한 바를 이행하려고 자원했던 기고를 쓰면서 필자는 MS의 비주얼 스튜디오 코드가 MS 생태계와 그동안 거리가 있었던 개발자들에게 호응을 얻을 수 있겠다는 확신이 들었다. 물론 한글 2바이트(byte) 문제 해결 이후겠지만. 그리고 이렇게 코드에 익숙해진 개발자들은 이후에 비주얼 스튜디오에 적응하는 데도 크게 지장이 없을 것 같다는 생각이 든다. 필자는 비주얼 스튜디오 코드가 이 부분만 잘 해결해도 엄청난 일을 한 것이라고 본다. 아마 에릭 감마도 이런 포석을 고민하고 만들었을 것으로 기대한다. 가랑비에 옷이 젖듯이 MS와 거리를 두었던 많은 개발자들이 맥북에서 사용하는 비주얼 스튜디오 코드를 통해 차츰 MS의 클라우드를 사용하고 오피스 365의 각종 서비스에 매시업(Mashup)하는 상상을 해본다. 다른 사람은 모르겠지만, 필자는 일단 그럴 것 같다. 왜냐고? 그냥 뭔가 재미있을 것 같다. 그리고 sublime text의 정품 얼럿이 아직 공개되지 않았기 때문도 이유 중 하나다. [마소]
'9. 데브옵스' 카테고리의 다른 글
[VS코드] 확장 프로그램 (0) | 2020.06.20 |
---|---|
[VS코드] 단축키 (0) | 2020.06.20 |
Setup emmet on VScode (0) | 2020.06.18 |
[VS코드] 부트 + 리액트 / 투프로젝트(클라이언트) #40 (0) | 2020.06.18 |
[VS코드] 부트 + 리액트 / 원프로젝트 #31 (0) | 2020.06.18 |
- Total
- Today
- Yesterday
- mariadb
- Mongo
- terms
- docker
- springMVC
- JPA
- Algorithm
- Oracle
- jQuery
- ERD
- Mlearn
- database
- nodejs
- tensorflow
- SpringBoot
- JUnit
- Python
- intellij
- Git
- AWS
- FLASK
- Java
- Eclipse
- COLAB
- React
- maven
- SQLAlchemy
- KAFKA
- vscode
- Django
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |