2006년 개발 연대기: 브라우저는 단순해지고 서버는 빌려 쓰기 시작했다
jQuery, JSON RFC, Amazon S3·EC2, Twitter, Java 6과 .NET 3.0이 등장하고 국내에서 WiBro와 UCC가 확산된 2006년을 살펴봅니다.
2006년의 개발자는 서로 다른 두 종류의 복잡성을 줄이기 시작했다. 브라우저에서는 jQuery가 DOM 탐색과 이벤트, Ajax 호출의 차이를 감췄다. 서버에서는 Amazon S3와 EC2가 저장 공간과 계산 자원을 웹 API로 빌려 쓰는 방식을 내놓았다.
JSON은 가벼운 데이터 교환 형식으로 RFC에 기록되었고, Twitter는 짧은 상태 메시지를 실시간으로 연결했다. 웹 애플리케이션은 더 자주 서버와 통신하고, 더 작은 데이터를 주고받으며, 사용자가 만드는 콘텐츠를 즉시 퍼뜨리는 방향으로 움직였다.
국내에서는 WiBro 상용 서비스가 시작되어 이동 중 초고속인터넷을 표방했다. 동영상 UCC와 블로그, 미니홈피는 웹 2.0의 이용자 참여를 대중적인 문화로 만들었다.
2006년을 보여주는 장면
| 분야 | 주요 변화 | 개발자에게 생긴 의미 |
|---|---|---|
| JavaScript | jQuery 공개와 1.0 출시 | 브라우저 차이를 감춘 간결한 DOM·이벤트·Ajax API가 등장함 |
| 데이터 교환 | JSON을 다룬 RFC 4627 발행 | 작고 언어 독립적인 텍스트 데이터 형식과 application/json이 문서화됨 |
| 클라우드 기반 | Amazon S3와 EC2 공개 | 저장 공간과 가상 서버를 API로 요청하고 사용량에 따라 지불할 수 있게 됨 |
| 실시간 서비스 | twttr에서 첫 메시지 전송 | 짧은 상태와 사람의 관계를 시간순으로 연결하는 서비스가 출발함 |
| Java | Java SE 6 출시 | 성능·진단·웹 서비스·스크립팅·데스크톱 기능이 보강됨 |
| Microsoft 플랫폼 | .NET Framework 3.0 출시 | WPF·WCF·WF·CardSpace가 .NET 2.0 위에 추가됨 |
| 국내 통신 | WiBro 상용화 | 이동 중 광대역 인터넷을 제공하려는 서비스가 시작됨 |
| 국내 콘텐츠 | 동영상 UCC 확산 | 이용자의 제작·공유·퍼가기가 포털과 영상 서비스의 핵심 기능이 됨 |
jQuery, 브라우저 차이를 짧은 코드 뒤로
John Resig은 2006년 1월 jQuery를 공개했다. 공식 블로그의 1월 24일 글은 jQuery가 그보다 약 일주일 앞서 발표되었다고 기록한다. 여러 초기 버전을 거쳐 jQuery 1.0은 같은 해 8월에 출시되었다.
당시 JavaScript 개발은 브라우저마다 다른 DOM과 이벤트 모델, Ajax 구현을 처리해야 했다. 같은 기능을 Internet Explorer와 Firefox, Safari에서 동작하게 하려면 조건문과 우회 코드가 늘어났다.
jQuery는 CSS 선택자와 비슷한 문법으로 요소를 찾고, 결과에 메서드를 연달아 적용하는 방식을 제공했다.
$(".notice")
.addClass("active")
.on("click", function () {
$(this).hide();
});
개발자는 요소 탐색과 이벤트 등록의 브라우저별 세부 구현보다 화면 동작에 집중할 수 있었다. Ajax 요청, 애니메이션, 속성과 스타일 변경도 일관된 API로 제공했다.
플러그인 구조도 중요한 특징이었다. jQuery 객체에 기능을 확장해 슬라이더와 메뉴, 폼 검증 같은 사용자 인터페이스를 재사용할 수 있었다. 공식 블로그에는 공개 직후인 1월 25일 이미 첫 외부 플러그인이 소개되었다.
jQuery는 2006년에 모든 웹 개발의 표준이 된 것이 아니다. 그러나 브라우저 호환성 비용을 라이브러리가 대신 부담한다는 가치가 빠르게 알려졌고, 이후 오랜 기간 웹 프런트엔드의 기본 도구로 성장한다.
JSON, 가벼운 데이터 형식이 RFC에 기록되다
JSON 자체는 2006년에 처음 고안된 형식이 아니다. JavaScript 객체 리터럴과 비슷한 표기법을 데이터 교환에 사용하는 방식은 앞서 서비스와 라이브러리에서 쓰이고 있었다.
2006년 7월 Douglas Crockford가 작성한 RFC 4627은 JSON을 가볍고 텍스트 기반이며 언어에 독립적인 데이터 교환 형식으로 설명하고, application/json 미디어 형식을 등록했다. 이 문서는 정보 제공용 RFC였으며 당시의 인터넷 표준으로 지정된 것은 아니었다.
JSON은 객체, 배열, 문자열, 숫자, 불리언, null이라는 작은 자료 구조로 데이터를 표현했다.
{
"year": 2006,
"topics": ["jQuery", "S3", "EC2"],
"published": true
}
XML과 비교하면 닫는 태그와 네임스페이스 같은 부가 구조가 적어 웹 애플리케이션이 작은 데이터를 자주 주고받기에 편리했다. JavaScript에서 다루기 자연스러웠지만 Java, C#, PHP, Python, Ruby 등 여러 언어도 생성기와 파서를 제공했다.
Ajax의 이름에는 XML이 들어가지만 실제 비동기 통신의 응답이 반드시 XML일 필요는 없었다. JSON은 브라우저와 서버 사이의 데이터 형식으로 점차 선호되며 API 설계의 중요한 구성 요소가 된다.
Amazon S3와 EC2, 인프라가 웹 서비스가 되다
Amazon은 2006년 3월 13일 Simple Storage Service, S3를 발표했다. 개발자는 REST 또는 SOAP 인터페이스로 임의의 데이터를 저장하고 다시 가져올 수 있었다. 저장 용량과 전송량에 따라 비용을 내는 방식이었다.
초기 S3에서 객체 하나의 최대 크기는 5GB였고, 데이터는 키와 메타데이터, 접근 제어 목록과 함께 버킷에 저장되었다. 개발자가 디스크를 구매하고 스토리지 서버를 직접 구성하지 않아도 인터넷을 통해 확장 가능한 저장 공간을 사용할 수 있다는 점이 핵심이었다.
몇 달 뒤 Amazon은 Elastic Compute Cloud, EC2의 제한된 공개 베타를 시작했다. 개발자는 Amazon Machine Image를 이용해 가상 서버 인스턴스를 실행하고 종료할 수 있었다. 초기에는 초대를 받은 개발자에게 제공되었으며 누구나 바로 가입하는 무제한 베타는 2007년에 열린다.
S3와 EC2는 완성된 쇼핑몰이나 블로그 기능을 제공하는 서비스가 아니었다. 다른 소프트웨어를 만들기 위한 저장 공간과 계산 능력을 API로 제공했다. 서버를 몇 주에 걸쳐 주문하고 설치하는 대신 필요한 시점에 요청하고 사용한 만큼 비용을 내는 모델이었다.
2006년 당시에는 현재처럼 수많은 관리형 데이터베이스와 서버리스 서비스가 갖춰져 있지 않았다. 그럼에도 컴퓨팅 인프라를 프로그래밍 가능한 서비스로 취급한다는 생각은 배포와 확장 방식의 근본적인 변화를 예고했다.
Twitter, 짧은 상태가 실시간으로 이어지다
Twitter는 Odeo 내부 프로젝트 twttr로 시작했다. 2006년 3월 21일 Jack Dorsey가 첫 메시지를 보냈고, 7월에는 서비스가 공개되었다.
초기 Twitter는 “지금 무엇을 하고 있는가”를 짧은 문자로 알리는 서비스에 가까웠다. 웹과 SMS를 이용해 상태를 올리고, 관심 있는 사용자의 업데이트를 시간순으로 받아볼 수 있었다.
블로그가 비교적 완결된 글과 독립된 페이지를 중심으로 했다면 Twitter의 메시지는 짧고 즉각적이었다. 콘텐츠의 단위가 작아지자 작성 빈도는 높아졌고, 사람을 팔로우하는 관계와 시간순 스트림이 화면의 중심이 되었다.
이 구조는 개발 측면에서도 새로운 요구를 만들었다. 많은 사용자의 짧은 쓰기 요청을 빠르게 저장하고, 팔로우 관계에 따라 업데이트를 배포하며, SMS와 웹을 함께 처리해야 했다. 해시태그와 리트윗 같은 대표 기능은 이용자 관행과 후속 개발을 거쳐 나중에 정식 기능이 되므로 2006년의 초기 Twitter에 모두 존재했다고 보아서는 안 된다.
Java SE 6, 새 문법보다 실행과 운영을 다듬다
2006년 12월 Java SE 6이 출시되었다. 이 버전부터 제품 이름은 J2SE가 아니라 Java Platform, Standard Edition으로 바뀌었다. 제품 버전은 6이지만 개발 도구와 시스템 속성에서는 1.6.0이라는 번호도 함께 사용되었다.
Java 5가 제네릭과 애너테이션 등 언어 문법을 크게 바꾼 버전이었다면 Java 6는 실행 성능과 안정성, 진단과 관리 기능을 다듬는 성격이 강했다.
JAX-WS 2.0과 JAXB 2.0이 포함되어 SOAP 웹 서비스와 XML 데이터 바인딩을 표준 플랫폼에서 다루기 쉬워졌다. javax.script API는 다른 스크립트 언어 엔진을 Java 프로그램 안에서 호출하는 표준 틀을 제공했다.
JConsole과 모니터링·관리 기능이 개선되어 실행 중인 JVM의 메모리와 스레드, 성능 상태를 살피는 도구도 강화되었다. 컴파일러 API와 애너테이션 처리 API는 Java 컴파일러와 코드 생성 도구를 프로그램에서 이용할 수 있게 했다.
Swing에는 테이블 정렬과 필터링, 시스템 트레이, 시작 화면, 데스크톱 연동 같은 기능이 추가되었다. 웹과 서버 개발이 커지는 중에도 Java는 데스크톱 애플리케이션 플랫폼의 기능을 계속 보강했다.
.NET Framework 3.0, 2.0 위에 네 가지 기반 기술을 더하다
마이크로소프트는 2006년 11월 .NET Framework 3.0을 출시했다. 이름만 보면 CLR과 기본 클래스 라이브러리가 3세대로 바뀐 것처럼 보이지만, 실제로는 .NET Framework 2.0의 CLR과 기본 라이브러리 위에 새로운 구성 요소를 추가한 제품이었다.
- Windows Presentation Foundation(WPF): XAML과 벡터 기반 렌더링, 데이터 바인딩을 사용하는 윈도우 사용자 인터페이스 기술
- Windows Communication Foundation(WCF): 여러 전송 방식과 메시지 형식을 통합해 서비스 통신을 구성하는 기술
- Windows Workflow Foundation(WF): 장시간 진행되는 업무 절차와 상태를 워크플로로 표현하는 기술
- Windows CardSpace: 디지털 신원 선택과 인증을 위한 기술
WPF는 Windows Forms와 다른 화면 구성 모델을 제시했고, WCF는 각각 따로 사용하던 웹 서비스와 원격 통신 기술을 하나의 프로그래밍 모델로 묶으려 했다.
.NET Framework 3.0은 Windows Vista에 포함되었지만 Windows XP SP2와 Windows Server 2003에서도 설치할 수 있었다. Windows Vista는 2006년 11월 기업용 라이선스 고객에게 제공되기 시작했고, 일반 소비자용 출시는 2007년 1월이었다. 따라서 Vista의 대중 출시를 2006년으로 단순하게 기록하면 시점이 어긋난다.
국내: 이동하는 인터넷과 동영상 UCC
2006년 3월 KT는 서울 일부 지역에서 WiBro 시범 서비스를 시작했고, 6월 KT와 SK텔레콤이 상용 서비스를 개시했다. WiBro는 노트북과 PDA 등에 모뎀을 연결해 이동 중에도 광대역 인터넷을 사용하는 것을 목표로 했다.
초기 서비스 지역과 단말기 선택은 제한적이었다. 당시 기사에서도 네트워크 도달 범위와 단말 부족이 확산의 장애로 지적되었다. WiBro가 장기적으로 국내 이동통신의 주류가 되지는 못했지만, 고정된 장소의 초고속인터넷을 이동 환경으로 넓히려 한 중요한 시도였다.
인터넷 서비스에서는 UCC가 핵심 용어로 떠올랐다. 국내에서 UCC는 User Created Content 또는 User Generated Content를 가리켰고, 특히 이용자가 올리는 동영상과 강하게 연결되어 사용되었다.
한국인터넷진흥원이 12~49세 인터넷 이용자 2,457명을 대상으로 실시한 당시 조사에서는 카페·커뮤니티, 퍼나르기, 블로그·미니홈피, 댓글, UCC 제작 중 하나 이상에 참여한 비율이 91.6%로 집계되었다. 조사 범위와 정의를 고려해야 하지만 이용자 참여가 인터넷의 일상적인 행위가 되었음을 보여준다.
판도라TV, 엠군, 엠엔캐스트 등 동영상 서비스와 다음·네이버·네이트 같은 포털이 업로드와 재생, 공유 기능을 경쟁했다. 외부 블로그와 게시판으로 영상을 퍼갈 수 있는 임베드 기능은 콘텐츠가 원래 사이트 밖으로 확산되는 통로가 되었다.
이 흐름은 저장 공간과 전송망, 동영상 변환 처리의 수요를 키웠다. 동시에 방송 영상의 무단 업로드, 음악 저작권, 개인의 초상권과 명예훼손 같은 문제도 커졌다. 이용자가 콘텐츠 생산자가 된다는 것은 플랫폼이 권리 침해 신고와 삭제, 반복 위반 대응까지 운영해야 한다는 의미였다.
2006년의 의미
2006년에는 웹 개발의 여러 층이 동시에 추상화되었다. jQuery는 브라우저마다 다른 JavaScript 구현을 간결한 API 뒤로 감췄고, JSON은 서버와 브라우저가 주고받는 데이터를 작게 표현했다. S3와 EC2는 물리적 저장 장치와 서버를 웹 서비스 호출 뒤로 옮겼다.
Twitter와 국내 UCC 서비스에서는 더 짧고 빈번한 콘텐츠가 관계망을 따라 퍼졌다. Java SE 6는 실행 환경과 운영 도구를 다듬었고, .NET Framework 3.0은 화면과 통신, 업무 흐름을 위한 새 프레임워크를 추가했다.
국내의 WiBro는 인터넷이 특정 회선과 장소를 벗어날 미래를 앞당겨 보여주었다. 아직 스마트폰과 앱스토어가 본격화되기 전이었지만, 소프트웨어는 이미 항상 연결되고 즉시 갱신되는 환경을 향하고 있었다.
다음 해인 2007년에는 iPhone, Android 공개, Hadoop, Silverlight, C# 3.0과 LINQ가 등장한다. 웹 중심의 개발 흐름이 손안의 컴퓨터와 대규모 분산 데이터 처리로 확장되기 시작한다.
참고 자료
- jQuery, Announcing the jQuery Blog
- jQuery, Official jQuery Blog: 2006 Archive
- IETF, RFC 4627: The application/json Media Type for JSON
- AWS, Announcing Amazon S3
- AWS, Amazon S3
- AWS, Our Origins
- Twitter, #numbers
- Oracle, Java SE Specifications
- Oracle, Java SE 6 Platform Name and Version Numbers
- Oracle, Java SE 6 Release
- Microsoft, .NET Framework 3.0 Released
- Microsoft, Microsoft Rallies Developers to Build Next-Generation Applications
- 대한민국 정책브리핑, 당당히 일어서라 IT 코리아
- 전자신문, 와이브로 시범 서비스 D-10
- 전자신문, 웹 2.0이 대세
- 전자신문, 도대체 UCC가 뭐기에
- 전자신문, 동영상 UCC 트렌드 다섯