2015년 개발 연대기: JavaScript의 재정비와 클라우드 네이티브의 출발
ECMAScript 2015, React Native, Kubernetes 1.0과 CNCF, TensorFlow 공개, HTTP/2, Windows 10, 국내 클라우드컴퓨팅법과 인터넷전문은행 예비인가로 2015년의 개발 흐름을 살펴봅니다.
2015년에는 웹 언어, 모바일 앱, 서버 운영과 기계학습에서 새로운 공통 기반이 모습을 갖췄다. ECMAScript 2015는 오랫동안 ‘ES6’로 개발되던 대규모 JavaScript 개정안을 정식 표준으로 확정했다. React Native는 React의 컴포넌트 모델을 네이티브 모바일 UI로 옮겼고, HTTP/2는 웹 요청을 전달하는 방식 자체를 바꾸었다.
Kubernetes는 1.0을 출시하고 새로 출범한 Cloud Native Computing Foundation에 기증되었다. Google은 내부 기계학습 시스템의 후속 기술인 TensorFlow를 오픈 소스로 공개했다. 두 프로젝트 모두 곧바로 지금과 같은 생태계를 갖춘 것은 아니지만, 인프라와 인공지능 개발을 공개된 플랫폼 위에서 함께 발전시키는 중요한 출발점이 되었다.
국내에서는 클라우드컴퓨팅의 산업 진흥과 이용자 보호를 함께 다루는 법률이 시행되었다. 한국카카오은행과 케이뱅크는 인터넷전문은행 예비인가를 받았다. 서비스 출시 이전 단계였지만 금융을 지점이 아닌 소프트웨어와 모바일 경험 중심으로 다시 설계하려는 흐름이 제도권에 들어왔다.
2015년을 보여주는 장면
| 분야 | 주요 변화 | 개발자에게 생긴 의미 |
|---|---|---|
| JavaScript | ECMAScript 2015 표준 확정 | 모듈·클래스·블록 스코프·Promise 등 대규모 언어 기능 추가 |
| 모바일 | React Native 공개 | JavaScript와 React로 네이티브 UI를 구성하는 선택지 등장 |
| 컨테이너 운영 | Kubernetes 1.0·CNCF 출범 | 클러스터 운영 기술을 중립적 오픈 소스 생태계로 발전시킬 기반 마련 |
| 기계학습 | TensorFlow 오픈 소스 공개 | 계산 그래프 기반 모델을 연구와 서비스에서 공유할 도구 제공 |
| 웹 프로토콜 | HTTP/2 RFC 7540 | 하나의 연결에서 요청을 다중화하고 헤더 전송을 효율화 |
| Windows | Windows 10·UWP | 여러 Windows 기기를 하나의 앱 플랫폼으로 묶으려는 시도 |
| 국내 클라우드 | 클라우드컴퓨팅법 시행 | 산업 촉진과 이용자 정보 보호를 함께 규정한 법적 기반 마련 |
| 국내 핀테크 | 인터넷전문은행 예비인가 | 모바일 금융 서비스와 대규모 금융 전산 구축 경쟁의 시작 |
ECMAScript 2015, JavaScript를 큰 프로그램의 언어로 다듬다
Ecma International은 6월 17일 ECMA-262 제6판을 승인했다. 이 표준은 연도 기반 이름을 사용해 ECMAScript 2015로 불렸고, 개발 과정에서 널리 쓰인 ES6라는 이름도 계속 통용되었다. 1999년 제3판 이후 가장 큰 언어 개정이었다.
let과 const는 함수가 아닌 블록을 기준으로 변수 범위를 만들었다. 화살표 함수, 기본 매개변수, 나머지 매개변수, 구조 분해와 템플릿 리터럴은 반복적인 표현을 줄였다. class 문법은 기존 프로토타입 상속 위에 더 익숙한 표현을 제공했고, Map, Set, iterator와 generator도 표준에 들어왔다.
const posts = [
{ year: 2014, published: true },
{ year: 2015, published: true },
];
const years = posts
.filter(({ published }) => published)
.map(({ year }) => `${year}년`);
Promise는 비동기 작업의 성공과 실패를 값의 흐름으로 연결하는 표준 방법을 제공했다. 모듈 문법의 import와 export도 정의되었지만, 2015년의 브라우저와 Node.js가 모든 기능을 같은 수준으로 즉시 지원한 것은 아니다. 개발 현장에서는 Babel 같은 변환 도구와 polyfill, Webpack·Browserify 같은 번들러를 함께 사용하는 경우가 많았다.
따라서 표준 승인과 실행 환경의 구현 완료를 구분해야 한다. ECMAScript 2015는 개발자가 바로 모든 브라우저에 원본 코드를 배포할 수 있게 한 사건이라기보다, JavaScript의 다음 세대를 위한 문법과 의미가 더 이상 바뀌지 않는 공통 기준으로 확정된 사건이었다.
React Native, 웹뷰가 아닌 네이티브 UI를 JavaScript로
Facebook은 1월 React.js Conf에서 React Native를 소개하고 3월 26일 iOS 지원 코드를 오픈 소스로 공개했다. Android 지원은 9월 14일 공개되었다. 두 플랫폼이 같은 날 완성된 것이 아니며, 프로젝트의 버전도 여전히 0.x 단계였다.
React Native는 HTML을 모바일 웹뷰 안에 그리는 하이브리드 앱 도구와 접근이 달랐다. JavaScript로 작성한 React 컴포넌트가 iOS의 UIView, Android의 View 같은 네이티브 UI 구성요소를 사용하도록 연결했다. 개발자는 상태에 따른 선언적 UI와 컴포넌트 재사용이라는 React의 방식을 모바일 앱에도 적용할 수 있었다.
function YearCard({ year }) {
return (
<View>
<Text>{year}년 개발 연대기</Text>
</View>
);
}
“한 번 작성해 어디서나 실행”보다 React Native가 내세운 표현은 “한 번 배우고 어디서나 작성”에 가까웠다. iOS와 Android가 많은 JavaScript 로직을 공유할 수 있어도 화면 관례와 네이티브 API, 성능 특성이 달랐고 플랫폼별 코드가 필요할 수 있었다.
초기 구조에서는 JavaScript와 네이티브 영역 사이의 비동기 bridge가 통신을 맡았다. 짧은 시간에 많은 데이터를 주고받거나 복잡한 애니메이션을 처리할 때 병목이 생길 수 있었다. React Native는 네이티브 개발을 없앤 기술이 아니라 두 플랫폼의 공통 부분을 더 높은 수준에서 관리하는 새로운 절충안이었다.
Kubernetes 1.0과 CNCF, 프로젝트를 생태계로
Google은 7월 21일 Kubernetes 1.0을 발표했다. 2014년 공개 이후 여러 기업과 개인이 참여해 Pod, Replication Controller, Service와 label 같은 핵심 개념을 다듬었다. 선언한 상태와 실제 클러스터 상태의 차이를 지속적으로 조정하는 제어 루프가 운영 모델의 중심이었다.
같은 날 Linux Foundation과 여러 기업은 Cloud Native Computing Foundation, CNCF의 출범을 발표했고 Google은 Kubernetes를 첫 프로젝트로 기증했다. 특정 클라우드 사업자의 제품에 묶이지 않는 중립적 거버넌스에서 컨테이너 관련 기술과 사양을 발전시키려는 선택이었다.
1.0은 중요한 기준점이었지만 설치와 운영이 쉬워졌다는 뜻은 아니었다. 클러스터의 네트워크, 저장소, 인증, 업그레이드와 모니터링은 여전히 운영자의 큰 책임이었다. Helm은 아직 정식 Kubernetes 패키지 관리 도구가 아니었고, StatefulSet·RBAC 같은 익숙한 기능도 이후 버전에서 성숙했다.
2015년에는 Docker 중심의 컨테이너 관심이 개별 실행 도구를 넘어 원하는 서비스 상태를 클러스터가 유지하게 하는 운영 방식으로 확장되었다. CNCF는 이 방식을 한 회사의 구현이 아니라 여러 공급자와 프로젝트가 함께 만드는 생태계로 키울 제도적 공간을 제공했다.
TensorFlow, Google의 기계학습 도구를 공개하다
Google은 11월 9일 TensorFlow를 Apache 2.0 라이선스의 오픈 소스로 공개했다. Google 내부에서 사용하던 DistBelief의 후속 시스템으로, 수치 연산을 데이터가 흐르는 계산 그래프로 표현하고 CPU와 GPU에서 실행할 수 있도록 설계되었다.
import tensorflow as tf
a = tf.constant(2)
b = tf.constant(3)
result = tf.add(a, b)
with tf.Session() as session:
print(session.run(result))
연구자는 수학적 연산과 모델 구조를 코드로 구성하고, 같은 핵심 도구를 실험과 제품 서비스에 적용할 가능성을 얻었다. 공개 저장소를 통해 외부 개발자가 버그를 고치고 새로운 연산과 플랫폼 지원에 기여할 수도 있었다.
그러나 2015년 TensorFlow를 현재의 사용 경험과 같다고 보면 안 된다. 초기 0.x 버전은 그래프를 먼저 정의하고 Session에서 실행하는 방식이 중심이었으며, 즉시 실행 eager execution은 훨씬 뒤에 기본이 되었다. Keras가 TensorFlow의 공식 고수준 API가 된 것도 이후의 일이다. 공개된 첫 버전은 Google의 모든 내부 인프라나 학습 데이터까지 제공한 것이 아니었다.
이 해에는 이미지 분류 모델 VGG와 GoogLeNet의 영향, 딥러닝 연구의 성과가 계속 확산되고 있었다. TensorFlow의 공개는 그러한 모델을 구현하고 반복 실험하는 기반을 더 많은 개발자에게 제공했다는 점에서 의미가 컸다.
HTTP/2, 요청마다 연결을 늘리던 웹의 병목을 줄이다
IETF는 5월 HTTP/2를 RFC 7540으로 발표했다. HTTP의 메서드와 상태 코드, URI 같은 의미는 유지하면서 전송 표현을 텍스트 줄 단위에서 이진 프레임으로 바꾸었다. 하나의 연결 안에서 여러 요청과 응답을 동시에 주고받는 stream multiplexing이 핵심이었다.
HTTP/1.1에서는 여러 자원을 병렬로 내려받기 위해 브라우저가 한 호스트에 여러 TCP 연결을 여는 경우가 많았다. HTTP/2는 스트림을 교차 전송하고 HPACK으로 반복되는 헤더를 압축하며 요청 우선순위와 서버 푸시를 정의했다. 연결 수와 불필요한 헤더 전송을 줄일 수 있었다.
응용 프로그램의 HTTP 의미가 바뀐 것은 아니어서 기존 웹사이트와 API를 모두 다시 작성할 필요는 없었다. 그러나 웹 서버, 프록시, CDN, TLS 협상과 모니터링 도구가 새 프로토콜을 지원해야 효과를 얻을 수 있었다. 브라우저의 실제 배포에서는 암호화된 h2 연결이 사실상 중심이 되었다.
HTTP/2가 모든 지연을 제거하지도 않았다. 하나의 TCP 연결을 사용하므로 패킷 손실이 여러 스트림에 영향을 줄 수 있었다. RFC 7540은 이후 2022년 RFC 9113으로 대체되었지만, 2015년에는 웹 성능 최적화가 파일 결합과 도메인 분할만의 문제가 아니라 전송 프로토콜 자체의 문제로 확장되었다.
Windows 10과 UWP, 하나의 Windows를 향한 시도
Microsoft는 7월 29일 Windows 10을 190개국에 출시했다. Windows 7과 8.1 사용자에게 일정 기간 무료 업그레이드를 제공했고, Windows를 일회성 대형 버전보다 지속적으로 업데이트되는 서비스로 운영하려는 방향을 내세웠다.
개발자에게는 Universal Windows Platform, UWP가 중요한 변화였다. 공통 API 집합과 하나의 스토어 패키지를 기반으로 PC, 휴대전화, Xbox, Surface Hub, HoloLens와 IoT 기기를 대상으로 앱을 만들 수 있도록 했다. 화면 크기와 입력 장치에 따라 UI를 조절하고, 기기별 기능은 API 계약을 확인해 사용했다.
‘하나의 앱’이 모든 장치에서 완전히 같은 화면과 기능을 자동으로 제공한다는 뜻은 아니었다. 각 기기의 사용 맥락과 지원 API가 달랐고, 기존 Win32·WPF 애플리케이션도 계속 중요한 위치를 차지했다. Windows 10 Mobile의 시장 성과도 PC와 같지 않았다.
Windows 10은 Microsoft Edge를 새 기본 브라우저로 도입했지만 초기 Edge는 이후 Chromium 기반 Edge와 다른 EdgeHTML 엔진을 사용했다. Internet Explorer 11도 기업 호환성을 위해 함께 남아 있었다. 이 시점은 오래된 Windows 호환성과 새 앱 플랫폼이 공존하는 전환기였다.
국내: 클라우드컴퓨팅법, 산업 촉진과 이용자 보호를 함께 규정
「클라우드컴퓨팅 발전 및 이용자 보호에 관한 법률」은 3월 27일 공포되어 9월 28일 시행되었다. 클라우드컴퓨팅 산업의 발전, 공공 부문의 이용 촉진, 중소기업 지원과 전문 인력 양성뿐 아니라 이용자 정보 보호와 계약 종료 시 정보 반환·파기 같은 사항을 규정했다.
법률이 시행되면서 클라우드는 단순한 외산 서버 임대 상품이 아니라 국내 산업·공공 정보화 정책이 다루는 정식 서비스 범주가 되었다. 공급자는 서비스의 안정성과 정보 보호, 침해 사고 통지와 이용자 데이터 처리 절차를 더 분명히 설명해야 했다.
다만 법 제정만으로 공공기관과 기업의 시스템이 즉시 클라우드로 이전된 것은 아니다. 보안 인증, 데이터 위치, 기존 조달 절차와 개인정보 규정, 레거시 시스템 연계가 실제 도입의 조건이었다. 개발 조직에는 기술 선택과 함께 계약·보안·데이터 이전 가능성을 아키텍처 단계에서 검토하는 과제가 커졌다.
국내: 인터넷전문은행은 ‘출범’이 아니라 예비인가 단계
금융위원회는 11월 29일 한국카카오은행과 케이뱅크에 은행업 예비인가를 내렸다. 카카오톡의 고객 기반과 KT·금융·결제 사업자들의 연합을 활용해 지점 없이 모바일과 인터넷을 중심으로 은행 서비스를 설계하려는 계획이었다.
이는 실제 영업 개시와 구분해야 한다. 케이뱅크의 본인가와 출범은 2016~2017년, 카카오뱅크의 본인가와 서비스 출시는 2017년에 이루어졌다. 2015년에는 사업 계획과 주주 구성, 자본·전산·보안 체계를 심사받고 실제 은행 시스템을 준비할 자격을 얻은 단계였다.
개발 관점에서는 계좌·대출·결제·인증·고객 지원을 모바일 앱 안에서 끊김 없이 연결하면서 금융 원장의 정확성과 규제, 개인정보 보호, 24시간 가용성을 동시에 충족해야 하는 대형 소프트웨어 과제가 시작되었다. 편리한 UI 뒤에는 기존 금융망과 신용평가, 이상거래 탐지 및 재해복구 시스템의 연결이 필요했다.
2015년의 의미
2015년은 개발자가 사용할 수 있는 공통 기반이 여러 층에서 재정비된 해였다. ECMAScript 2015는 JavaScript의 언어 표현을, HTTP/2는 웹 전송을, React Native는 모바일 UI의 공유 방식을 바꾸었다. Windows 10은 서로 다른 Windows 기기를 하나의 앱 플랫폼으로 묶으려 했다.
Kubernetes 1.0과 CNCF는 컨테이너 운영을 중립적인 오픈 소스 생태계의 문제로 만들었고, TensorFlow는 기계학습 시스템을 공개된 코드와 커뮤니티 안에서 발전시킬 계기를 제공했다. 두 프로젝트가 이후 거대한 플랫폼이 된 결과를 2015년의 완성도로 오해하지 않는 것이 중요하다.
국내에서는 클라우드컴퓨팅법이 서비스형 인프라의 촉진과 이용자 보호를 제도화했고, 인터넷전문은행 예비인가가 금융 서비스를 소프트웨어 중심으로 재구성할 준비를 시작했다. 2016년에는 .NET Core 1.0, Angular 2, Vue 2, Kotlin 1.0, Docker의 오케스트레이션 통합과 AlphaGo 대국이 이 흐름을 더 구체적인 제품과 사회적 관심으로 이어가게 된다.
참고 자료
- Ecma International, ECMAScript 2015 Language Specification
- Ecma International, ECMA-262 6th edition adopted
- React Native, Bringing modern web techniques to mobile
- React Native, React Native for Android
- Kubernetes, 10 Years of Kubernetes
- Kubernetes, Kubernetes 1.1: since the 1.0 release in July
- Linux Foundation, Cloud Native Computing Foundation to drive alignment among container technologies
- Google, TensorFlow: smarter machine learning, for everyone
- TensorFlow, Citing TensorFlow
- RFC Editor, RFC 7540: Hypertext Transfer Protocol Version 2
- Microsoft, Windows 10 available July 29
- Microsoft Learn, Windows 10 build 10240 for developers
- 국가법령정보센터, 클라우드컴퓨팅 발전 및 이용자 보호에 관한 법률 제정문
- 금융위원회, 인터넷전문은행 예비인가 결과