2005년 개발 연대기: 웹페이지가 웹 애플리케이션으로 바뀌다
Ajax, Google Maps, YouTube, Git, Rails 1.0과 .NET 2.0이 등장하고 국내에서 검색과 1인 미디어가 성장한 2005년을 살펴봅니다.
2005년에는 웹을 설명하는 어휘가 달라졌다. 브라우저가 서버에 요청하고 완성된 페이지를 다시 받는 전통적인 흐름 사이에 JavaScript가 적극적으로 개입했다. 필요한 데이터만 백그라운드에서 가져와 화면 일부를 바꾸는 방식에 Ajax라는 이름이 붙었다.
Google Maps에서는 지도를 마우스로 끌어 움직여도 페이지가 새로 고쳐지지 않았다. YouTube는 동영상을 올리고 웹에서 바로 재생하며 다른 사람과 공유하는 과정을 하나의 서비스로 묶었다. 사용자가 콘텐츠와 데이터를 만들고 서비스가 이를 연결하는 흐름은 ‘웹 2.0’이라는 표현과 함께 확산되었다.
개발자의 도구도 바뀌었다. Git은 대규모 오픈소스 프로젝트를 위한 분산 버전 관리라는 방향을 제시했고, Ruby on Rails 1.0은 웹 개발의 반복을 줄이는 프레임워크로 첫 안정판에 도달했다. .NET Framework 2.0과 Visual Studio 2005도 언어와 웹 개발 기능을 크게 확장했다.
2005년을 보여주는 장면
| 분야 | 주요 변화 | 개발자에게 생긴 의미 |
|---|---|---|
| 웹 기술 | Ajax라는 용어 등장 | 비동기 통신과 DOM 갱신을 조합한 웹 애플리케이션 방식이 공통 이름을 얻음 |
| 지도 | Google Maps 출시와 지도 API 공개 | 새로고침 없이 움직이는 지도와 외부 사이트의 지도 결합이 가능해짐 |
| 동영상 | YouTube 공개 | 동영상 업로드·변환·재생·공유가 웹 서비스 안에서 연결됨 |
| 버전 관리 | Git 개발 시작 | 전체 이력을 각 개발자가 보유하는 분산형 협업 도구가 등장함 |
| 웹 프레임워크 | Ruby on Rails 1.0 출시 | 관례와 자동화를 앞세운 웹 프레임워크가 안정된 공개 버전에 도달함 |
| Microsoft 플랫폼 | .NET Framework 2.0과 Visual Studio 2005 | 제네릭과 ASP.NET 2.0, 팀 개발 도구가 추가됨 |
| 국내 인터넷 | 검색 경쟁과 1인 미디어 정착 | 포털이 검색·콘텐츠·관계·광고를 한 플랫폼에 결합함 |
Ajax, 이미 존재하던 기술 조합이 이름을 얻다
2005년 2월 18일 Jesse James Garrett은 「Ajax: A New Approach to Web Applications」라는 글에서 새로운 웹 애플리케이션 모델을 Ajax라고 불렀다. Ajax는 Asynchronous JavaScript and XML의 약자였다.
Ajax가 2005년에 갑자기 발명된 단일 기술은 아니었다. HTML과 CSS, DOM, JavaScript, XML, XSLT, 그리고 백그라운드 HTTP 통신을 위한 XMLHttpRequest 같은 기존 기술을 함께 사용하는 접근이었다. XMLHttpRequest의 기원은 마이크로소프트의 웹메일 기술과 Internet Explorer용 ActiveX 구성 요소까지 거슬러 올라간다.
전통적인 웹 애플리케이션에서는 사용자가 링크나 버튼을 누를 때마다 서버가 새 HTML 페이지를 만들어 보냈다. Ajax 방식에서는 브라우저 안의 JavaScript가 서버와 비동기로 통신하고, 받은 데이터를 이용해 필요한 화면만 변경할 수 있었다.
Gmail과 Google Suggest, Google Maps가 이 접근의 대표 사례로 언급되었다. 중요한 것은 XML을 반드시 사용한다는 점보다 사용자 조작과 서버 통신을 분리해 화면 전체의 새로고침을 줄였다는 점이었다. 이후 JSON이 데이터 교환에 널리 쓰이면서도 Ajax라는 이름은 계속 사용된다.
개발자는 브라우저 안의 상태와 이벤트, 네트워크 오류, 뒤로 가기, 접근성까지 더 세밀하게 다뤄야 했다. 웹이 풍부해진 만큼 클라이언트 코드의 복잡성도 커졌다.
Google Maps, 지도를 끌어서 움직이다
Google Maps는 2005년 2월 8일 데스크톱 웹 서비스로 출시되었다. 기존 온라인 지도에서는 방향 버튼을 눌러 새 이미지를 받을 때까지 기다리는 방식이 흔했지만, Google Maps는 마우스로 지도를 잡아 끌고 이동한 영역의 지도 조각을 동적으로 불러왔다.
지도는 작은 타일 이미지로 나뉘어 필요한 영역만 전송되었다. JavaScript가 화면의 좌표와 사용자 입력을 처리하고 백그라운드에서 새 타일을 가져오면서, 사용자는 하나의 연속된 지도를 움직이는 것처럼 느낄 수 있었다.
같은 해 중반에는 Google Maps API가 발표되었다. 외부 개발자가 자신의 웹사이트에 지도를 넣고 위치 표시와 데이터를 결합할 수 있게 된 것이다. 부동산, 여행, 지역 정보처럼 주소와 장소를 다루는 서비스가 독자적인 지도 시스템을 처음부터 만들지 않고도 지리 정보를 화면에 표현할 수 있었다.
서로 다른 서비스의 데이터와 기능을 조합하는 **매시업(mashup)**도 웹 2.0의 대표적인 개발 방식으로 주목받았다. 브라우저의 상호작용뿐 아니라 서비스가 제공하는 API가 플랫폼의 가치를 넓힐 수 있음을 보여준 사례였다.
YouTube, 웹에서 동영상을 올리고 바로 보다
YouTube 도메인은 2005년 2월 14일 등록되었다. 4월 23일에는 공동 창업자 Jawed Karim이 첫 영상인 「Me at the zoo」를 올렸고, 5월 비공개 베타 형태로 서비스를 시작했다. 더 넓은 대중에게 공개된 시점은 그해 말이므로 이 단계들을 하나의 출시일로 단순화하지 않는 편이 정확하다.
YouTube의 가치는 동영상 파일을 저장하는 데만 있지 않았다. 사용자가 파일을 올리면 서비스가 웹 재생에 알맞은 형식으로 처리하고, 제목과 태그를 붙이며, 링크나 삽입 코드를 통해 다른 사이트와 블로그에 공유할 수 있었다.
당시에는 브라우저가 동영상을 동일한 표준 방식으로 직접 재생하지 못했다. YouTube는 Flash 기반 플레이어를 이용해 사용자마다 다른 재생 프로그램과 코덱을 설치해야 하는 부담을 줄였다.
디지털카메라와 카메라폰이 보급되고 초고속인터넷이 확산된 환경도 중요했다. 영상을 만드는 사람과 보는 사람이 모두 방송 사업자일 필요가 없어졌다. 다만 대용량 파일의 저장과 변환, 전송 비용, 저작권 침해 대응은 동영상 플랫폼이 해결해야 할 새로운 운영 문제가 되었다.
Git, 한곳의 저장소가 없어도 이어지는 개발
Linux 커널 프로젝트는 2002년부터 상용 분산 버전 관리 시스템 BitKeeper를 사용했다. 2005년 커뮤니티와 BitKeeper 개발사의 관계가 틀어지고 무료 사용 조건이 철회되자, Linus Torvalds와 Linux 개발자들은 새 도구를 만들기 시작했다.
Git은 속도, 단순한 내부 설계, 비선형 개발, 완전한 분산 구조, Linux 커널 같은 대규모 프로젝트의 효율적인 처리를 목표로 했다. 각 개발자는 프로젝트의 파일뿐 아니라 전체 변경 이력을 포함한 저장소를 가질 수 있었다.
변경 내용은 파일 이름의 목록보다 프로젝트 상태를 나타내는 스냅샷과 객체로 관리되었고, 내용 기반 해시로 서로 연결되었다. 브랜치를 만드는 비용이 작고 병렬적인 개발 흐름을 다루기 쉬운 구조였다.
2004년에 출시된 Subversion이 CVS의 중앙 집중식 작업 방식을 개선했다면, Git은 중앙 서버가 모든 작업의 필수 지점이 아닌 분산형 협업을 택했다. 그러나 2005년의 Git은 Linux 커널 개발 문제를 해결하기 위해 빠르게 만들어진 초기 도구였다. 이후 GitHub가 등장하며 대중적인 협업 기반이 되는 것은 몇 년 뒤의 일이다.
Ruby on Rails 1.0, 생산성 중심 프레임워크의 안정판
2004년에 초기 버전이 공개된 Ruby on Rails는 2005년 12월 13일 1.0에 도달했다. 최초 공개 후 약 15개월 동안 수많은 수정과 기여를 거쳐 첫 안정판이라는 이정표를 세웠다.
Rails는 데이터베이스 테이블과 Ruby 객체를 연결하는 Active Record, 요청과 화면 흐름을 다루는 Action Pack, 이메일을 처리하는 Action Mailer 등을 하나의 프레임워크로 제공했다. 코드 생성 도구와 데이터베이스 마이그레이션도 반복 작업을 줄였다.
설정보다 관례, 반복하지 않기라는 원칙은 개발자가 프레임워크의 규칙을 따르면 적은 설정으로 기능을 구현하게 했다. 짧은 시연만으로 블로그 같은 CRUD 애플리케이션을 빠르게 만드는 모습은 웹 프레임워크의 생산성을 평가하는 기준에 영향을 주었다.
Rails 1.0은 모든 규모의 시스템에 자동으로 맞는 해답은 아니었다. 암묵적인 관례를 이해해야 했고, 규모가 커지면 성능과 배포 구조를 별도로 설계해야 했다. 그럼에도 프레임워크가 개발자의 반복 작업을 적극적으로 제거해야 한다는 기대를 넓혔다.
.NET Framework 2.0, 언어와 웹 개발 도구를 확장하다
마이크로소프트는 2005년 10월 Visual Studio 2005와 .NET Framework 2.0을 출시했다. 일부 지원 수명 문서에는 지역별 일반 공급 시점이 2006년으로 표시되지만, 제품 발표와 출시 자체는 2005년 10월에 이루어졌다.
C# 2.0에는 제네릭, nullable 값 형식, 익명 메서드, 반복기, partial 형식 등이 추가되었다. 특히 제네릭은 컬렉션에 담는 형식을 컴파일 시점에 검사하면서 불필요한 형 변환과 박싱을 줄일 수 있게 했다.
ASP.NET 2.0은 마스터 페이지, 테마, 멤버십과 역할 관리, 사이트 탐색, 데이터 소스 컨트롤 등을 제공했다. 로그인과 공통 레이아웃, 데이터 연결처럼 웹사이트에서 반복되는 기능을 프레임워크와 시각적 도구로 처리하려 했다.
Visual Studio 2005 Team System은 설계와 개발, 테스트 등 역할별 팀 개발 활동을 통합하려는 제품군이었다. 함께 구상된 서버 구성 요소 Team Foundation Server의 정식 출시는 2006년이므로 두 시점을 구분해야 한다. 개인 학습자와 소규모 개발자를 위한 Visual Studio Express 제품도 제공되었다.
Java와 .NET의 기업 플랫폼 경쟁은 계속되었지만, 한편에서는 Rails처럼 더 가볍고 빠른 개발 경험을 내세운 프레임워크가 관심을 얻었다. 개발 플랫폼의 경쟁 기준이 기능의 수뿐 아니라 얼마나 적은 코드와 설정으로 결과를 만드는가로 넓어졌다.
국내: 검색과 1인 미디어가 포털을 재구성하다
2005년 국내에서는 블로그와 미니홈피가 메일, 뉴스, 카페, 검색에 이어 포털의 대표 서비스로 자리 잡았다. 메트릭스의 당시 집계에서는 11월 한 달 동안 블로그와 미니홈피 이용자가 각각 2천만 명을 넘었다. 측정 방식에 따른 차이는 있지만 1인 미디어가 대중적인 이용 행태가 되었음을 보여준다.
싸이월드는 2004년 9월 가입자 1천만 명을 넘긴 뒤 2005년 상반기 약 1천400만 명으로 성장했다. 실명 기반 일촌 관계와 미니홈피, 사진, 배경음악, 도토리 결제를 결합한 구조가 일상적인 온라인 활동으로 확산되었다.
포털의 검색 경쟁도 치열해졌다. 웹문서만 찾는 검색에서 뉴스, 블로그, 카페, 지식, 상품과 지역 정보를 함께 보여주는 통합 검색으로 범위가 넓어졌다. 이용자가 만든 콘텐츠는 검색 결과를 풍부하게 했고, 키워드 검색 광고는 포털의 주요 수익원이 되었다.
사용자가 생산한 콘텐츠를 서비스의 핵심 자산으로 삼는다는 점에서 국내 포털과 1인 미디어는 웹 2.0의 특징을 이미 구현하고 있었다. 다만 모든 서비스를 열린 API로 제공하거나 외부 개발자의 조합을 장려한 것은 아니었다. 포털 내부에 사용자를 오래 머물게 하는 폐쇄적인 통합 전략도 강했다.
한국인터넷진흥원이 선정한 2005년 주요 이슈에는 광대역통합망 시범 서비스, 인터넷전화 사업자 모집, 휴대인터넷 WiBro의 국제표준 공인도 포함되었다. 초고속 유선망을 넘어 음성과 이동통신, 인터넷 서비스를 하나의 네트워크로 연결하려는 흐름이었다.
피싱과 파밍 같은 보안 문제도 주요 이슈로 떠올랐다. 인터넷뱅킹과 포털 계정, 온라인 결제가 일상화되면서 사용자를 속여 인증 정보를 빼내는 공격의 가치도 커졌다. 서비스 개발자는 서버 침입뿐 아니라 사용자가 보는 주소와 화면, 인증 과정 전체를 보호해야 했다.
2005년의 의미
2005년은 웹이 문서를 전달하는 매체에서 소프트웨어가 실행되는 플랫폼으로 전환하고 있음을 분명히 보여주었다. Ajax라는 이름은 이미 존재하던 기술을 하나의 개발 모델로 이해하게 했고, Google Maps는 그 상호작용을 지도 위에서 체감하게 했다. YouTube는 이용자가 만든 대용량 영상까지 웹의 콘텐츠로 끌어들였다.
Git은 개발 이력을 중앙 서버 한곳에만 두지 않는 협업 방식을 시작했다. Rails 1.0과 .NET 2.0은 서로 다른 철학으로 웹 개발 생산성을 높이려 했다.
국내에서는 검색과 블로그, 미니홈피가 포털 안에서 결합되고 인터넷전화와 휴대인터넷이 다음 연결 환경을 준비했다. 웹 2.0이라는 표현을 얼마나 사용했는지와 별개로, 사용자가 콘텐츠를 만들고 관계를 맺으며 서비스의 가치를 키우는 구조는 이미 일상 속에서 작동하고 있었다.
다음 해인 2006년에는 jQuery, Amazon S3와 EC2, Twitter, Windows Vista, Java 6이 등장한다. 브라우저 개발을 단순화하는 라이브러리와 필요할 때 빌려 쓰는 컴퓨팅 인프라가 새로운 개발 기반으로 모습을 드러낸다.
참고 자료
- Jesse James Garrett, Ajax at 20
- Jesse James Garrett, Career Timeline
- Google, A Look Back at 15 Years of Mapping the World
- YouTube, Celebrating 10 Years of YouTube
- YouTube, YouTube Receives $3.5M in Funding from Sequoia Capital
- Git, A Short History of Git
- Ruby on Rails, Rails 1.0: Party Like It’s One Oh Oh
- Ruby on Rails, Rails Releases
- Microsoft Visual Studio Blog, Support Ending for Visual Studio 2005
- 한국인터넷진흥원·전자신문, 2005년 인터넷 10대 이슈
- 메트릭스·뉴스와이어, 2005년 인터넷미디어 10대 이슈
- 전자신문, 2005 상반기 인기상품: 싸이월드