블로그 목록
SW 개발 연대기

2010년 개발 연대기: 앱은 더 큰 화면으로, 클라우드는 오픈소스로

iPad와 iOS 4, Android의 성장, Windows Phone 7, npm과 AngularJS의 초기 공개, OpenStack, 그리고 국내 Galaxy S와 카카오톡으로 2010년의 개발 흐름을 살펴봅니다.

2026년 7월 24일약 22분
#2010#iPad#iOS 4#Android#Windows Phone 7#npm#AngularJS#OpenStack#Galaxy S#카카오톡#개발 연대기

2010년의 개발자는 ‘모바일’을 더 이상 한 종류의 작은 화면으로 생각할 수 없게 됐다. iPad가 휴대전화와 PC 사이에 태블릿 앱 시장을 열었고, Android 단말기는 제조사와 화면 크기, 통신망을 넓혀 갔다. Microsoft도 기존 Windows Mobile과 단절한 Windows Phone 7으로 다시 경쟁에 들어왔다.

웹 개발에서는 전년도에 등장한 Node.js를 실제 프로젝트로 확장할 도구가 갖춰지기 시작했다. npm이 패키지 설치와 공유를 맡았고 AngularJS의 초기 오픈소스 버전은 브라우저 화면을 데이터와 연결하는 선언적 접근을 보여줬다. 인프라에서는 OpenStack이 공개돼 특정 사업자의 공용 클라우드뿐 아니라 조직이 직접 구축하는 클라우드도 오픈소스로 논의되기 시작했다.

국내에서는 Galaxy S가 출시되고 카카오톡이 서비스를 시작했다. 스마트폰이 새로운 단말기 판매 경쟁에 그치지 않고, 주소록과 데이터망을 이용해 빠르게 사용자를 연결하는 서비스 플랫폼으로 변하는 과정이 드러났다.

2010년을 보여주는 장면

분야주요 변화개발자에게 생긴 의미
태블릿iPad와 전용 SDK 출시휴대전화 앱을 확대하는 것을 넘어 큰 터치 화면용 UI를 설계하게 됨
모바일 OSiPhone OS가 iOS로 개칭되고 iOS 4 공개멀티태스킹·폴더·새 API와 함께 지원 기기별 동작을 고려
Android2.2 Froyo와 2.3 Gingerbread성능, 브라우저, 센서·통신 API가 확장되고 단말기 종류가 증가
모바일 경쟁Windows Phone 7 출시Silverlight와 XNA 기반의 세 번째 주요 앱 플랫폼이 등장
JavaScript 도구npm과 AngularJS 초기 공개패키지 재사용과 구조화된 단일 페이지 앱 개발이 구체화됨
오픈소스 클라우드OpenStack 출범과 Austin 릴리스자체 데이터센터에서도 IaaS를 구성할 공개 소프트웨어가 등장
국내 단말기Galaxy S 출시Android 앱이 국내 대중 시장과 직접 만나는 대표 기기가 등장
국내 서비스카카오톡 출시모바일 주소록과 푸시·데이터 통신을 결합한 서비스가 빠르게 성장

iPad, 앱의 화면과 사용 맥락을 넓히다

Apple은 1월 27일 iPad를 발표하고 4월 3일 미국에서 Wi-Fi 모델을 판매하기 시작했다. 9.7인치 멀티터치 화면을 갖춘 iPad는 당시 App Store의 iPhone 앱 대부분을 실행할 수 있었지만, Apple은 발표 당일 별도의 iPad SDK와 시뮬레이터도 공개했다.

개발자는 하나의 프로젝트에서 iPhone과 iPad를 지원하는 유니버설 앱을 만들 수 있었다. 그러나 단순히 좌표와 이미지를 비례 확대하는 것만으로는 큰 화면을 제대로 활용하기 어려웠다. 분할 화면, 팝오버, 가로·세로 방향 전환과 같이 iPad에 맞춘 인터페이스 구성 요소와 정보 구조가 필요했다.

iPad는 전자책, 잡지, 동영상, 게임뿐 아니라 문서 작성과 프레젠테이션 같은 생산성 앱의 가능성을 넓혔다. 터치 기기를 위한 앱이 이동 중 짧게 사용하는 도구에서 소파, 교실, 매장, 회의실에서 오래 사용하는 소프트웨어로 확장된 것이다.

발표와 판매 시점도 구분해야 한다. 1월은 제품과 SDK가 공개된 때이고, 실제 첫 판매는 4월 3일이었다. 국내 정식 출시는 11월이어서 개발자와 사용자가 접한 시점에는 지역별 차이가 있었다.

iOS 4, 하나의 휴대전화 운영체제에서 기기군의 플랫폼으로

Apple은 4월 iPhone OS 4를 미리 공개하고 6월 정식 버전을 제공했다. 이때 운영체제 이름을 iOS로 바꿨다. iPhone뿐 아니라 iPod touch와 iPad까지 같은 계열의 운영체제를 사용하면서 제품군 전체를 가리키는 이름이 필요해진 것이다.

iOS 4는 제한된 형태의 멀티태스킹 API, 앱 폴더, 로컬 알림, 향상된 데이터 보호 등을 도입했다. 앱이 백그라운드에서 음악을 재생하거나 위치를 추적하고, 작업을 마칠 시간을 요청하는 등 허용된 범위에서 실행을 이어갈 수 있었다.

모든 기기가 같은 기능을 제공한 것은 아니었다. 구형 iPhone과 iPod touch에는 일부 기능이 제한됐고, iPad용 iOS 4.2는 11월에 제공됐다. 개발자는 운영체제 버전뿐 아니라 기기의 성능과 지원 API를 확인해야 했다. 모바일 앱의 호환성 표가 본격적으로 복잡해지기 시작한 시기였다.

Android, 빠른 갱신과 다양한 단말기를 함께 감당하다

Google은 5월 Android 2.2 Froyo SDK를 공개했다. JIT 컴파일러를 통한 성능 개선, 브라우저 JavaScript 향상, 클라우드-기기 메시징, 앱의 외부 저장소 설치 같은 기능이 추가됐다. 12월에는 Android 2.3 Gingerbread SDK가 나와 NFC, 자이로스코프와 여러 센서, 인터넷 전화와 게임 개발을 위한 API를 확장했다.

Android Market도 성장했고 제조사별 Android 단말기가 여러 국가에서 출시됐다. 개발자에게 시장이 커진다는 것은 더 많은 화면 해상도, 하드웨어 기능, Android 버전을 지원해야 한다는 뜻이기도 했다. Google은 화면 밀도별 리소스와 API 수준을 제공했지만 실제 단말기 시험의 중요성은 더 커졌다.

이 시기의 Android 앱은 주로 Java와 Eclipse용 Android Development Tools로 개발했다. 성능이 중요한 부분에는 NDK를 사용할 수 있었지만, 네이티브 코드는 기기 구조와 빌드 복잡성을 늘렸다. Android의 개방성은 선택의 폭과 호환성 관리라는 두 얼굴을 동시에 보여줬다.

Windows Phone 7, 기존 모바일 Windows를 다시 시작하다

Microsoft는 2월 Mobile World Congress에서 Windows Phone 7 Series를 발표하고, 9월에 코드를 제조 단계로 넘겼다. 10월 11일 단말기와 출시 계획을 공개했으며 유럽을 시작으로 실제 판매가 이어졌다.

Windows Phone 7은 Windows Mobile의 작은 데스크톱과 같은 화면을 이어가지 않았다. 글자와 콘텐츠를 크게 보여주는 Metro 디자인, 앱 아이콘 대신 실시간 정보를 표시하는 Live Tile, 사람·사진·음악을 모으는 Hub를 중심으로 새 사용자 경험을 만들었다.

일반 앱은 Silverlight와 C#으로, 게임은 XNA Framework로 개발했다. Visual Studio와 Expression Blend, 에뮬레이터가 도구로 제공돼 기존 .NET 개발자가 모바일 앱으로 옮겨갈 수 있었다. 반면 기존 Windows Mobile 앱과의 호환성을 끊었기 때문에 사실상 새 플랫폼을 처음부터 구축해야 했다.

2010년의 모바일 시장은 iOS와 Android만으로 완전히 굳어진 상태가 아니었다. Microsoft, Nokia의 Symbian, RIM의 BlackBerry, HP가 인수한 webOS가 각자의 개발 생태계를 운영했다. 개발자는 어느 플랫폼에 인력과 비용을 배분할지 선택해야 했다.

npm, Node.js 코드의 공유 단위를 만들다

Isaac Z. Schlueter가 만든 npm은 2010년 초 첫 공개 버전을 내놓고 Node.js 모듈을 설치·게시하는 명령줄 도구와 공개 레지스트리를 제공했다. Node.js 자체가 2009년에 등장했지만, 다른 개발자의 코드를 일관된 방법으로 가져오고 의존성을 기록하는 기반은 npm과 함께 형성됐다.

package.json에는 프로젝트 이름과 버전, 실행 명령, 필요한 패키지를 적을 수 있었다. 개발자는 저장소마다 설치 방법을 찾아 직접 복사하는 대신 명령으로 의존성을 내려받을 수 있었다.

{
  "name": "chronicle-2010",
  "version": "0.1.0",
  "dependencies": {
    "express": "1.x"
  }
}

npm은 처음부터 현재 규모의 중앙 생태계였던 것은 아니다. 초기 Node.js 사용자들의 모듈을 찾고 설치하는 문제를 해결하는 작은 프로젝트에서 출발했다. 의미는 패키지 수가 많았다는 데 있지 않고, 서버 JavaScript 공동체가 코드를 배포하고 조합할 공통 절차를 얻었다는 데 있다.

편리한 자동 설치는 의존성의 수와 깊이를 늘릴 가능성도 만들었다. 패키지의 버전과 유지 상태, 하위 의존성까지 프로젝트의 안정성과 보안에 영향을 주는 문제는 생태계가 커지면서 점차 중요한 과제가 된다.

AngularJS 초기 공개, HTML에 애플리케이션 구조를 넣다

Miško Hevery와 Adam Abrons가 시작한 AngularJS는 Google 내부에서 발전한 뒤 2010년 오픈소스 프로젝트로 공개되기 시작했다. 다만 안정된 AngularJS 1.0 발표는 2012년이므로 2010년의 AngularJS를 완성된 프레임워크로 설명해서는 안 된다.

AngularJS는 HTML에 ng-model, ng-repeat 같은 속성을 더해 화면과 JavaScript 데이터를 선언적으로 연결하려 했다. 개발자가 DOM 요소를 하나씩 찾아 값을 넣는 코드 대신, 데이터가 바뀌면 화면이 따라 바뀌는 구조를 표현할 수 있었다.

<input ng-model="name">
<p>Hello, {{ name }}</p>

의존성 주입, 컨트롤러, 템플릿, 양방향 데이터 바인딩은 복잡해지는 브라우저 애플리케이션을 구조화하려는 시도였다. jQuery가 브라우저 차이를 감추고 DOM 조작을 간편하게 만들었다면 AngularJS는 애플리케이션 전체의 구성 방식을 제안했다.

2010년에는 Backbone.js 같은 가벼운 프레임워크도 등장했다. 단일 페이지 애플리케이션을 만들 때 서버가 완성된 HTML을 매번 보내는 방식 외에, 브라우저 안에서 모델과 화면 전환을 관리하는 접근이 여러 형태로 실험됐다.

OpenStack, 클라우드 인프라를 공개 소프트웨어로 만들다

Rackspace와 NASA는 7월 OpenStack 프로젝트를 발표했다. Rackspace의 분산 객체 저장소 기술은 Swift가 됐고, NASA Nebula에서 발전한 컴퓨팅 제어 기술은 Nova의 기반이 됐다. 첫 설계 회의는 7월 13~14일 열렸고 프로젝트는 7월 21일 OSCON에서 공식 발표됐다.

10월 24일 첫 공식 릴리스 Austin이 공개됐다. Compute 영역에는 Nova와 가상 머신 이미지를 관리하는 Glance가, Object Storage 영역에는 Swift가 포함됐다. KVM, Xen 등 여러 하이퍼바이저와 EC2 호환 API, OpenStack 자체 API를 지원하려 했다.

AWS가 사업자의 데이터센터를 API로 빌려 쓰는 공용 클라우드를 확산시켰다면 OpenStack은 기업과 통신사, 연구기관이 자신의 하드웨어에 IaaS를 구축할 공개 기반을 제시했다. 특정 공급자에 종속되지 않는 사설·공용 클라우드를 만들려는 공동 프로젝트였다.

첫 릴리스의 설치와 운영은 쉽지 않았고 구성 요소도 지금보다 적었다. OpenStack을 완성된 ‘클라우드 운영체제’라기보다 컴퓨팅과 객체 저장소를 API로 제어하려는 초기 공개 기반으로 보는 편이 정확하다.

국내: Galaxy S와 Android 대중화

삼성전자는 6월 8일 국내용 Galaxy S를 공개하고 SK텔레콤을 통해 같은 달 판매를 시작했다. 4인치 Super AMOLED 화면과 1GHz 프로세서, Android 2.1을 탑재한 Galaxy S는 삼성전자가 세계 시장과 국내 시장에 함께 내놓은 전략 스마트폰이었다.

전년도 말 iPhone 출시가 국내 앱 시장의 문을 열었다면 Galaxy S는 Android 단말기의 대중화를 앞당겼다. 이동통신사와 제조사는 앱 장터와 개발자 지원 프로그램을 확대했고, 서비스 기업은 iOS와 Android 앱을 함께 제공해야 하는 압력을 받았다.

같은 서비스라도 두 운영체제의 언어와 UI 규칙, 배포 심사, 화면 크기가 달랐다. Objective-C 기반 iOS 팀과 Java 기반 Android 팀을 따로 두거나 공통 서버 API를 설계하는 일이 일반적인 모바일 서비스 개발 구조로 자리 잡기 시작했다.

스마트폰 가입자는 빠르게 늘었지만 모든 사용자가 즉시 이동한 것은 아니다. 피처폰과 WIPI 콘텐츠 시장도 남아 있었고 Android 버전과 제조사별 기능 차이도 컸다. 2010년은 기존 모바일 개발과 새 앱 개발이 겹쳐 있던 전환기였다.

카카오톡, 주소록 위에 모바일 관계망을 만들다

아이위랩은 3월 18일 iPhone용 카카오톡을 App Store에 출시했다. 전화번호부를 바탕으로 지인을 찾아 데이터 통신으로 메시지를 주고받는 무료 모바일 메신저였다. Android용 앱도 같은 해 공개되며 늘어나는 국내 스마트폰 사용자와 연결됐다.

카카오톡은 이동통신사의 유료 SMS와 달리 인터넷 데이터망을 사용했고, 별도의 복잡한 친구 등록 없이 기존 주소록을 관계망으로 활용했다. 스마트폰을 구입한 사용자가 주변 사람을 다시 초대하면서 서비스가 빠르게 퍼질 수 있는 구조였다.

급격한 사용량 증가는 서버 개발에도 새로운 과제를 줬다. 연결과 메시지 전달, 푸시 알림, 주소록 매칭, 장애 복구를 많은 사용자에게 제공해야 했다. 초기 팀이 주문한 서버가 도착하기 전에 추가 장비를 주문했다는 카카오의 기록은 모바일 서비스의 트래픽이 얼마나 빠르게 변할 수 있었는지 보여준다.

카카오톡의 모든 후속 기능이 2010년에 있었던 것은 아니다. 음성 통화, 게임, 결제, 비즈니스 채널은 이후에 추가됐다. 이 해의 핵심은 모바일 주소록과 데이터 통신만으로도 국내 사용자의 일상적 소통을 바꿀 서비스가 성장하기 시작했다는 점이다.

2010년의 의미

2010년에는 앱이 휴대전화 화면을 넘어 태블릿으로 확장됐고, Android와 Windows Phone 7이 서로 다른 개발 도구와 사용자 경험을 제시했다. 개발자는 하나의 ‘모바일 버전’을 만드는 대신 기기군과 운영체제별 제품을 설계해야 했다.

Node.js 주변에는 npm이라는 재사용 체계가 생겼고, AngularJS와 Backbone.js는 브라우저 애플리케이션의 구조를 고민하기 시작했다. OpenStack은 클라우드의 컴퓨팅과 저장소 제어 기술도 공개 공동체가 개발할 수 있음을 보여줬다.

국내에서는 Galaxy S와 카카오톡이 스마트폰 전환을 단말기와 서비스 양쪽에서 가속했다. 앱 개발은 해외 플랫폼을 따라가는 실험이 아니라 실제 국내 사용자를 대규모로 연결하는 사업 영역이 됐다. 2011년에는 Android와 iOS의 경쟁이 더 커지고, WebGL·WebSocket 같은 웹 API, Kotlin과 Dart 같은 새 언어, 클라우드 배포 자동화 도구가 다음 흐름을 만든다.

참고 자료