2004년 개발 연대기: 웹 애플리케이션이 더 빠르고 개인적으로 변하다
Firefox 1.0, Gmail, Facebook, Java 5, Ubuntu와 Ruby on Rails가 등장하고 국내에서 미니홈피와 블로그가 확산된 2004년을 살펴봅니다.
2004년에는 웹을 사용하는 경험과 웹 애플리케이션을 만드는 방식이 함께 달라졌다. Firefox 1.0은 Internet Explorer가 지배하던 브라우저 시장에 실질적인 대안을 제시했고, Gmail은 웹메일도 데스크톱 프로그램처럼 빠르게 반응할 수 있음을 보여주었다.
Facebook은 대학 안의 실제 관계를 온라인 프로필로 옮기기 시작했다. 국내에서는 미니홈피와 블로그가 대중화되며 개인의 일상과 관계가 포털 서비스의 중심 콘텐츠가 되었다.
개발 도구와 플랫폼도 큰 변화를 맞았다. Java 5는 언어 문법을 대폭 확장했고, Ubuntu는 예측 가능한 배포 주기를 약속한 리눅스 배포판으로 출발했다. Ruby on Rails는 웹 개발에서 반복되는 설정과 코드를 줄이는 새로운 접근을 공개했다.
2004년을 보여주는 장면
| 분야 | 주요 변화 | 개발자에게 생긴 의미 |
|---|---|---|
| 브라우저 | Firefox 1.0 출시 | 웹 표준과 확장 기능을 앞세운 오픈소스 브라우저가 대중에게 공개됨 |
| 웹메일 | Gmail 초대형 베타 시작 | 대용량 저장 공간, 검색, 동적 화면 갱신이 웹 애플리케이션의 기대치를 높임 |
| 소셜 서비스 | TheFacebook 출시 | 실제 신원과 관계를 중심으로 한 제한형 소셜 네트워크가 성장하기 시작함 |
| Java | J2SE 5.0 출시 | 제네릭, 애너테이션, 열거형 등 대규모 언어 변화가 도입됨 |
| 운영체제 | Ubuntu 4.10 출시 | 사용 편의성과 정기 출시를 내세운 데비안 기반 배포판이 등장함 |
| 버전 관리 | Subversion 1.0 출시 | CVS의 사용 방식을 계승하면서 디렉터리와 원자적 커밋 등을 개선함 |
| 웹 프레임워크 | Rails 0.5 공개 | 관례와 자동화를 통해 CRUD 웹 개발의 반복 작업을 줄이는 방식이 제시됨 |
| 국내 인터넷 | 미니홈피·블로그의 급성장 | 개인 콘텐츠와 관계 기능이 대규모 플랫폼의 핵심이 됨 |
Firefox 1.0, 브라우저 선택지가 다시 생기다
Mozilla 프로젝트에서 가벼운 단독 브라우저를 만들던 Phoenix는 Firebird를 거쳐 Firefox라는 이름을 얻었다. 2004년 11월 9일 Mozilla Foundation은 Windows, Mac OS X, Linux용 Firefox 1.0을 정식 출시했다.
Firefox 1.0은 탭 브라우징, 팝업 차단, 검색창, RSS를 활용하는 라이브 북마크, 확장 기능을 제공했다. 기존 브라우저의 북마크와 비밀번호, 쿠키를 가져오는 전환 기능도 포함해 일반 사용자가 브라우저를 바꾸는 부담을 낮췄다.
웹 개발자에게 Firefox는 Gecko 엔진에서 사이트를 검사해야 한다는 의미였다. Internet Explorer의 독자적인 동작만을 기준으로 만든 페이지는 표준을 따르는 다른 브라우저에서 제대로 표시되지 않을 수 있었다. HTML, CSS, DOM을 여러 브라우저에서 시험하고 호환성 차이를 처리하는 일이 더 분명한 개발 과제가 되었다.
Firefox는 오픈소스 코드만으로 완성된 제품이 아니었다. 번역, 오류 보고, 테스트, 문서와 홍보에 참여한 세계 각지의 공동체가 함께 배포를 준비했다. 2003년에 세워진 Mozilla Foundation이 독립적인 조직으로서 첫 대표 제품을 내놓은 결과이기도 했다.
Gmail, 웹페이지가 데스크톱 프로그램처럼 반응하다
Google은 2004년 4월 1일 Gmail을 공개했다. 처음부터 누구나 즉시 가입할 수 있는 완성 서비스는 아니었으며, 제한된 사용자를 초대하는 베타 형태로 시작했다.
Gmail은 무료 1GB 저장 공간을 제공했다. 당시의 일반적인 무료 웹메일보다 훨씬 큰 용량이었고, 메일을 계속 지우고 폴더로 정리하는 대신 검색으로 찾는 사용 방식을 강조했다. 같은 제목으로 오가는 메일은 대화 묶음으로 표시했다.
화면 전체를 매번 다시 불러오지 않고 JavaScript와 비동기 통신을 이용해 필요한 부분을 갱신한 점도 인상적이었다. 메일 목록을 이동하고 대화를 여는 과정이 전통적인 웹페이지보다 빠르게 느껴졌다.
이 방식을 가리키는 Ajax라는 이름은 Jesse James Garrett이 2005년에 정리해 제시한다. 따라서 2004년 당시 Gmail이 사용한 기술을 설명할 때 Ajax의 대표적 선례라고 할 수는 있지만, 그 해에 이미 Ajax라는 용어가 일반화되었다고 쓰는 것은 시기상 맞지 않는다.
Gmail은 브라우저 안의 프로그램이 단순한 문서 입력 화면보다 훨씬 풍부하게 동작할 수 있음을 보여주었다. 이후 개발자는 서버에서 HTML을 완성해 보내는 방식뿐 아니라, 브라우저의 상태와 사용자 동작을 적극적으로 설계하게 된다.
TheFacebook, 제한된 대학 네트워크에서 출발하다
2004년 2월 4일 Mark Zuckerberg와 공동 창업자들은 하버드대학교 학생을 대상으로 TheFacebook을 열었다. 같은 해 다른 대학들로 가입 범위를 넓혔고 12월에는 활성 사용자 100만 명에 도달했다.
초기의 TheFacebook은 전 세계 누구나 가입하는 공개 소셜 플랫폼이 아니었다. 대학 이메일 주소와 소속 네트워크를 바탕으로 프로필을 만들고, 아는 사람을 연결하며, 담벼락에 메시지를 남기는 서비스였다. 이름에서 The가 빠지는 시점도 2005년이다.
개발 관점에서 핵심은 실제 신원과 관계 그래프였다. 게시물 목록만 저장하는 커뮤니티와 달리 사용자와 사용자 사이의 연결, 소속 네트워크, 공개 범위가 데이터 모델의 중심에 놓였다.
사용자가 늘어날수록 관계 조회와 알림, 접근 권한, 악용 방지 같은 문제도 커진다. 2004년의 작은 대학 서비스는 이러한 소셜 애플리케이션 구조가 대규모로 확장되기 시작한 출발점이었다.
Java 5, 언어 자체가 크게 달라지다
Sun은 2004년 9월 J2SE 5.0을 출시했다. 개발 중에는 1.5라는 버전 번호가 사용되었지만 제품 표기는 5.0으로 정리되었다. JVM 클래스 파일 버전과 여러 내부 표기에는 1.5의 흔적이 남았다.
Java 5에는 Java 1.1 이후 가장 눈에 띄는 수준의 언어 변화가 한꺼번에 들어왔다.
- 제네릭은 컬렉션 등이 담을 자료형을 컴파일 시점에 검사할 수 있게 했다.
- 향상된 for 문은 배열과 컬렉션 순회를 간결하게 만들었다.
- 오토박싱과 언박싱은 기본형과 래퍼 객체 사이의 변환 코드를 줄였다.
- 열거형은 관련 상수 집합을 형식 안전한 언어 요소로 표현하게 했다.
- 가변 인자는 개수가 달라지는 인자를 받는 메서드 선언을 단순화했다.
- 애너테이션은 코드에 구조화된 메타데이터를 붙일 수 있게 했다.
- 정적 import는 정적 멤버를 클래스 이름 없이 참조할 수 있게 했다.
java.util.concurrent 패키지도 포함되었다. 스레드 풀, 동시성 컬렉션, 잠금과 동기화 도구가 표준 라이브러리에 들어오면서 개발자가 저수준 동기화만으로 모든 문제를 해결해야 하는 부담을 줄였다.
특히 애너테이션은 이후 프레임워크와 도구가 설정 정보를 읽는 중요한 수단이 된다. 다만 2004년에는 기존 Java 코드와 도구, 애플리케이션 서버가 새 문법과 런타임을 받아들이는 과정이 필요했다.
Ubuntu 4.10, 여섯 달마다 내놓는 리눅스
2004년 10월 20일 Ubuntu의 첫 공개 버전 4.10, 코드명 Warty Warthog가 출시되었다. 버전 번호 4.10은 2004년 10월이라는 출시 시점을 나타냈다.
Ubuntu는 Debian의 방대한 패키지 생태계를 바탕으로 단순한 설치, 엄선된 기본 프로그램, 무료 배포를 내세웠다. 첫 버전은 x86과 AMD64, PowerPC를 지원했고 GNOME 2.8, OpenOffice.org, Evolution, Firefox 0.9 등을 포함했다.
프로젝트는 6개월마다 새 버전을 내고 각 버전에 18개월 동안 보안과 기술 업데이트를 제공하겠다고 약속했다. 장기간 지원을 뜻하는 LTS 체계는 첫 버전부터 있었던 것이 아니며 2006년 Ubuntu 6.06에서 시작된다.
무료 설치 CD를 우편으로 보내는 ShipIt 프로그램도 접근 장벽을 낮췄다. 다운로드 환경이 충분하지 않은 사용자도 리눅스를 설치해 볼 수 있었다. Ubuntu는 데스크톱 사용 편의성과 예측 가능한 출시 일정을 리눅스 배포판의 중요한 가치로 제시했다.
Subversion 1.0, CVS를 계승하고 고치다
2004년 2월 23일 Subversion 1.0이 출시되었다. CollabNet이 시작하고 여러 개발자가 참여한 이 프로젝트는 당시 널리 사용되던 중앙 집중식 버전 관리 도구 CVS를 대체할 목적으로 개발되었다.
Subversion은 개발자가 익숙한 체크아웃과 업데이트, 커밋의 흐름을 유지하면서 CVS의 구조적 한계를 개선하려 했다. 파일뿐 아니라 디렉터리와 이름 변경도 버전 관리 대상으로 다루고, 여러 파일의 변경을 하나의 원자적 커밋으로 저장했다. 커밋 도중 오류가 발생하면 일부 파일만 저장소에 반영되는 상황을 피할 수 있었다.
브랜치와 태그는 저장소 안의 디렉터리를 저렴하게 복사하는 방식으로 표현했다. 네트워크를 통한 저장소 접근과 바이너리 파일 처리도 개선되었다. 모든 개발자가 전체 이력을 각자 보유하는 분산형 구조가 아니라, 하나의 중앙 저장소를 공유하는 방식이었다.
Subversion은 이후 여러 기업과 오픈소스 프로젝트의 표준적인 협업 도구가 된다. Git이 등장하는 것은 2005년이지만, 곧바로 모든 조직이 분산 버전 관리로 이동한 것은 아니다. 2004년의 Subversion 1.0은 중앙 집중식 버전 관리가 한 단계 성숙한 사건이었다.
Ruby on Rails, 반복을 줄이는 웹 개발
David Heinemeier Hansson은 Basecamp를 개발하며 만든 프레임워크를 분리해 2004년 7월 24일 Rails 0.5로 공개했다. Ruby on Rails 1.0이 나온 것은 2005년 12월이므로, 2004년의 출시는 초기 공개 버전으로 구분해야 한다.
Rails는 Model-View-Controller 구조를 사용하고, 데이터베이스 테이블과 객체를 연결하는 Active Record, 요청을 처리하는 Action Pack 같은 구성 요소를 제공했다. URL 라우팅과 템플릿, 데이터 저장에 필요한 반복 코드를 프레임워크가 맡았다.
두 가지 원칙이 특히 주목받았다.
- 설정보다 관례(Convention over Configuration): 이름과 폴더 구조에 일관된 규칙을 따르면 별도 설정을 줄였다.
- 반복하지 않기(Don't Repeat Yourself): 같은 정보를 여러 파일에 중복해서 적는 일을 피했다.
Rails는 2004년에 곧바로 주류 기업 프레임워크가 된 것은 아니다. 그러나 짧은 코드로 데이터 중심 웹 애플리케이션을 빠르게 만드는 모습을 보여주며 이후 웹 프레임워크가 개발자 경험과 생산성을 경쟁하는 데 영향을 주었다.
국내: 미니홈피와 블로그가 인터넷의 중심으로
2004년 국내 인터넷 업계의 대표 화두는 미니홈피와 블로그였다. 싸이월드는 가입자 1천만 명을 넘어섰고, 네이버 블로그와 다음의 개인화 서비스 등 포털의 경쟁도 확대되었다.
한 조사에서는 인터넷 이용자의 약 40%가 미니홈피나 블로그를 운영한다고 답했다. 정확한 비율은 조사 대상과 방식에 따라 달라질 수 있지만, 개인 미디어가 일부 적극적인 이용자만의 문화에서 대중적인 서비스로 이동했음을 보여준다.
미니홈피는 사진과 방명록, 일촌 관계, 배경음악과 꾸미기 아이템을 한 공간에 묶었다. 블로그는 글과 주제, 링크와 구독을 중심으로 발전했지만 국내 포털에서는 사진과 스킨, 이웃 기능을 더하며 미니홈피와 서로 닮아가기도 했다.
포털은 검색, 메일, 뉴스, 카페, 게임, 쇼핑과 개인 미디어를 한 계정 아래 연결했다. 검색 광고가 주요 수익 모델로 성장하면서 사용자가 만든 콘텐츠를 검색 결과에 어떻게 노출할지도 중요해졌다.
서비스 개발의 규모도 커졌다. 사진 파일을 저장하고 빠르게 전송해야 했으며, 방명록과 댓글을 즉시 반영하고, 친구 관계에 따라 콘텐츠 공개 범위를 판단해야 했다. 도토리와 디지털 아이템 같은 소액 결제는 서비스 기능과 수익 모델이 코드 안에서 긴밀하게 결합되는 사례였다.
휴대전화에서 사진을 전송하는 모블로그도 시도되었지만 통신사와 단말기마다 적용 방식이 달랐다. 모바일 웹 표준과 스마트폰 플랫폼이 자리 잡기 전에는 동일한 서비스를 여러 기기에 제공하는 데 별도의 개발 비용이 컸다.
2004년의 의미
2004년의 변화는 웹이 더 개인적이고 더 프로그램답게 변했다는 말로 묶을 수 있다. Firefox는 브라우저 선택과 표준 경쟁을 되살렸고, Gmail은 브라우저 안에서도 빠르게 반응하는 애플리케이션을 구현할 수 있음을 보여주었다. TheFacebook과 국내 미니홈피·블로그는 사람의 신원, 관계, 일상을 서비스의 핵심 데이터로 만들었다.
Java 5는 언어와 표준 라이브러리를 크게 확장했다. Ubuntu는 오픈소스 운영체제를 정기적으로 배포하고 지원하는 방식을 제시했고, Subversion은 협업을 위한 중앙 저장소를 개선했다. 초기 Rails는 웹 개발의 반복을 관례와 자동화로 줄이려 했다.
다음 해인 2005년에는 Ajax라는 이름이 등장하고, YouTube와 Google Maps가 웹에서 동영상과 지도를 다루는 방식을 바꾼다. Ruby on Rails 1.0과 Git 등 개발자의 도구와 협업 방식에도 중요한 변화가 이어진다.
참고 자료
- Mozilla, Mozilla Foundation Releases Firefox 1.0
- Official Gmail Blog, Gmail Turns 5
- Google Cloud Blog, Big(ger) Mail on Campus
- Meta, Facebook의 역사
- Oracle, Java Virtual Machine Specification: Java SE Release History
- Oracle, Java 2 Platform, Standard Edition 5.0
- Ubuntu, Announcing Ubuntu 4.10 “The Warty Warthog Release”
- Ubuntu, About the Ubuntu Project
- Apache Subversion, Subversion Release History
- Ruby on Rails, Celebrating Six Months Anniversary
- 대한민국 정책브리핑, 2004 한국인터넷 백서 10대 인터넷 뉴스
- 전자신문, 싸이월드, 신개념 블로그 ‘페이퍼’ 서비스 오픈
- 전자신문, ‘모블로그’ 갈 길 멀다
- 동아일보, 올 인터넷 최대 화두는 ‘미니홈피’와 ‘블로그’
- 동아일보, 인터넷 이용자 40% “미니홈피 또는 블로그 운영”