블로그 목록
SW 개발 연대기

1999년 개발 연대기: 웹은 문서를 넘어 애플리케이션의 기반이 됐다

ECMAScript 3와 J2EE, XPath·XSLT가 웹 프로그래밍과 기업 시스템의 구조를 넓히고, ADSL과 인터넷 벤처가 국내 개발 환경을 바꾼 1999년을 살펴봅니다.

2026년 7월 24일약 25분
#1999#개발사#ECMAScript 3#J2EE#XSLT#HTTP 1.1#오픈소스#국내 인터넷

1999년의 웹은 더 이상 문서를 읽고 링크를 따라가는 공간만으로 설명하기 어려웠다.

브라우저에서는 ECMAScript 3가 복잡한 프로그램을 작성하는 데 필요한 언어 기능을 갖췄다. 서버에서는 J2EE가 웹 요청, 업무 로직과 데이터베이스를 여러 계층으로 나누는 기업용 개발 모델을 제시했다. XML 문서를 선택하고 변환하는 XPath와 XSLT, 웹 접근성의 기준을 제시한 WCAG 1.0도 같은 해에 권고안이 됐다.

인터넷 서비스의 영향력도 커졌다. Napster는 개인의 컴퓨터를 연결한 파일 공유가 기존 콘텐츠 유통 구조를 흔들 수 있음을 보여줬고, 인터넷 기업에 자금과 기대가 몰리면서 닷컴 열풍이 절정으로 향했다. 국내에서는 ADSL 상용 서비스와 PC방의 급증이 인터넷을 일상적인 이용 환경으로 바꾸기 시작했다.

1999년은 웹의 표준과 서버 플랫폼, 네트워크 인프라가 맞물리면서 인터넷이 콘텐츠를 전달하는 매체에서 프로그램과 사업을 운영하는 기반으로 확장된 해였다.

먼저 보는 1999년

영역1999년의 흐름
웹 언어ECMAScript 3판 채택
웹 표준HTML 4.01, XPath 1.0, XSLT 1.0, WCAG 1.0 권고
네트워크HTTP/1.1이 RFC 2616으로 정리
기업 개발J2EE 1.2가 Servlet·JSP·EJB 등을 하나의 플랫폼으로 구성
공개 소프트웨어Linux 2.2와 GNOME 1.0, Red Hat의 기업공개
인터넷 서비스Napster 등장과 개인 간 파일 공유 확산
개발 현장Y2K 문제 점검과 기존 시스템 수정이 대규모로 진행
국내ADSL 경쟁, 인터넷 이용자 1,000만 명 돌파, PC방과 벤처 확산

ECMAScript 3가 JavaScript의 오랜 토대를 만들었다

Ecma International은 1999년 12월 ECMA-262 3판을 채택했다. Ecma의 공식 기록에서 3판의 발행 시점과 원문을 확인할 수 있다.

3판에는 이후 오랫동안 JavaScript의 기본 문법으로 사용될 기능들이 포함됐다.

  • 정규 표현식 객체
  • trycatch를 이용한 예외 처리
  • 문자열과 배열을 다루는 기능 확장
  • do-while, switch 등 제어문 정리
  • 숫자 출력과 형식 변환 기능 개선

ECMAScript 표준은 브라우저 화면을 다루는 DOM까지 정의하지 않았다. 따라서 Internet Explorer와 Netscape에서 같은 스크립트가 완전히 동일하게 동작한다는 보장은 여전히 없었다. 하지만 언어 자체의 공통 기반은 훨씬 단단해졌다.

ECMAScript 3는 다음 판으로 빠르게 교체되지도 않았다. 기능을 대폭 확장하려던 4판 논의가 합의에 이르지 못하면서 5판은 2009년에야 나온다. 결과적으로 1999년에 정리된 문법과 실행 모델은 2000년대 웹 프로그래밍의 긴 구간을 지탱하게 된다.

HTML 4.01과 HTTP/1.1이 기존 웹의 규칙을 다듬었다

W3C는 12월 24일 HTML 4.01을 권고안으로 발표했다. HTML 4.0에서 발견된 오류와 모호한 부분을 바로잡고 명세를 정리한 개정판으로, HTML 4 계열의 마지막 권고안이 됐다.

HTML 4.01은 Strict, Transitional, Frameset이라는 세 가지 문서형 정의를 제공했다. 새 문서는 구조와 표현을 분리하는 Strict 형식을 지향하되, 기존의 표현용 요소와 속성을 사용하는 문서도 Transitional 형식으로 수용했다. 표준이 이상적인 작성 방식만 제시하는 것이 아니라 이미 만들어진 방대한 웹과의 호환성을 함께 고려한 결과였다.

6월에는 HTTP/1.1이 RFC 2616으로 발표됐다. HTTP/1.1의 초기 규격은 1997년 RFC 2068로 나왔지만, RFC 2616은 구현 경험을 반영해 내용을 개정하고 명확하게 정리했다.

HTTP/1.1은 하나의 연결에서 여러 요청을 처리하는 지속 연결, 캐시 제어, 가상 호스팅에 필요한 Host 헤더, 부분 전송과 청크 전송 같은 기능을 규정했다. 웹 서비스의 규모가 커질수록 매 요청마다 연결을 새로 만드는 비용을 줄이고 여러 사이트를 효율적으로 운영하는 일이 중요해졌기 때문이다.

XML은 저장 형식에서 변환 가능한 문서 체계로 확장됐다

1998년 XML 1.0이 문서 구조의 기본 규칙을 마련했다면, 1999년에는 XML 문서를 실제로 선택하고 변환하기 위한 표준이 등장했다.

W3C는 11월 16일 XPath 1.0XSLT 1.0을 함께 권고안으로 발표했다.

XPath는 XML 문서의 계층 구조에서 원하는 노드와 값을 선택하는 표현식을 정의했다. XSLT는 XPath로 선택한 내용을 다른 XML 문서나 HTML, 텍스트로 변환하는 규칙을 정의했다.

예를 들어 하나의 상품 XML 데이터에서 웹 화면용 HTML을 만들거나, 필요한 항목만 골라 다른 시스템의 문서 형식으로 변환할 수 있었다. 내용과 표시 형식을 나누고 하나의 원본을 여러 결과물로 만드는 출판·문서 처리 방식이 웹 표준 안으로 들어온 것이다.

이러한 기술은 이후 웹 서비스와 기업 간 데이터 교환, 설정 파일과 문서 출판에 폭넓게 사용된다. 하지만 당시에는 XML 처리기의 성능과 도구 지원, 복잡한 문법도 함께 해결해야 할 과제였다.

WCAG 1.0이 웹 접근성을 개발 기준으로 제시했다

W3C는 5월 5일 Web Content Accessibility Guidelines 1.0을 권고안으로 발표했다.

WCAG 1.0은 이미지에 대체 텍스트를 제공하고, 색상만으로 정보를 구분하지 않으며, 표와 프레임에 구조를 설명하고, 키보드나 보조 기술로도 콘텐츠를 이용할 수 있게 하는 방법을 정리했다. 준수 항목은 중요도에 따라 우선순위 1·2·3으로 구분됐다.

웹 접근성은 특정 이용자를 위한 부가 기능이 아니라 문서 구조, 콘텐츠 작성과 인터페이스 구현 단계에서 고려해야 할 품질 기준으로 제시됐다. 웹이 공공 정보와 교육, 상거래의 기반으로 커질수록 누구에게 접근 가능한지를 개발자가 함께 책임져야 한다는 인식이 표준에 반영된 것이다.

J2EE가 기업용 Java 개발의 구조를 묶었다

Sun Microsystems는 12월 Java 2 Platform, Enterprise Edition 1.2를 발표했다. J2EE는 서로 따로 발전하던 서버 측 Java 기술을 하나의 플랫폼 규격과 버전으로 묶었다.

  • Servlet은 HTTP 요청과 응답을 처리했다.
  • JavaServer Pages는 HTML 중심의 동적 화면 작성을 지원했다.
  • Enterprise JavaBeans는 업무 로직과 트랜잭션을 서버 컴포넌트로 구성했다.
  • JDBC는 관계형 데이터베이스 연결을 제공했다.
  • JNDI는 이름·디렉터리 서비스를 찾는 공통 방식을 제공했다.
  • Java Transaction API는 여러 자원에 걸친 트랜잭션 처리를 규정했다.

J2EE의 핵심은 API 목록만이 아니었다. 플랫폼 명세, 참조 구현, 호환성 시험 도구와 설계 지침인 BluePrints를 함께 제공해 서로 다른 업체의 애플리케이션 서버에서 같은 프로그램을 실행한다는 목표를 세웠다. Oracle에 보존된 J2EE 자료는 개별 Enterprise Java API의 버전을 통합하고 서버 플랫폼의 호환성을 검사하려던 배경을 설명한다.

기업은 웹 화면 뒤에서 사용자 세션, 보안, 트랜잭션, 데이터베이스 연결과 기존 시스템 연계를 처리해야 했다. J2EE는 이 공통 기능을 애플리케이션 서버가 맡고 개발자는 정해진 컴포넌트 모델에 맞춰 업무 기능을 구현하는 구조를 제시했다.

그만큼 학습해야 할 규격과 배포 과정도 늘어났다. 이후 Java 기업 개발은 표준화와 이식성이라는 장점을 얻는 동시에 복잡한 설정과 무거운 컴포넌트 모델을 어떻게 줄일 것인지 계속 고민하게 된다.

Linux와 공개 소프트웨어가 데스크톱과 기업 시장으로 향했다

Linux 커널 2.2는 1999년 1월 공개됐다. 네트워크와 파일 시스템, 다중 프로세서 지원이 개선되면서 Linux가 개인의 실험용 운영체제를 넘어 서버와 기업 환경에서 검토되는 흐름이 강해졌다.

3월 3일에는 GNOME 1.0이 공개됐다. GNOME은 자유 소프트웨어로 구성된 데스크톱 환경과 응용 프로그램 개발 기반을 제공하려는 프로젝트였다. Linux와 Unix 계열 운영체제를 명령행과 서버의 영역에만 두지 않고 일반 사용자가 이용할 수 있는 그래픽 환경으로 넓히려는 시도였다.

상업적 관심도 눈에 띄게 커졌다. Red Hat은 8월 주식시장에 상장했고, 12월에는 Linux 시스템 업체 VA Linux가 상장했다. 공개된 코드를 기반으로 배포판, 지원, 하드웨어와 서비스를 판매하는 사업 모델에 자본시장의 기대가 몰렸다.

1998년에 ‘오픈 소스’라는 이름과 정의가 등장했다면, 1999년에는 공개 소프트웨어를 중심으로 제품과 기업을 만드는 일이 시장에서 크게 주목받기 시작했다.

Napster는 네트워크의 이용 방식과 책임 문제를 드러냈다

Shawn Fanning이 개발한 Napster는 1999년 6월 서비스를 시작했다. 사용자의 컴퓨터에 저장된 MP3 파일 목록을 중앙 서버에서 검색하고, 실제 파일은 사용자끼리 직접 전송하는 구조였다.

웹사이트 운영자가 모든 콘텐츠 파일을 보관하지 않더라도 사용자들의 컴퓨터와 네트워크를 연결해 대규모 서비스를 만들 수 있었다. 동시에 디지털 파일은 복제 비용이 거의 없고 원본과 복사본의 품질 차이도 없다는 사실을 음악 산업 전체가 체감하게 됐다.

미국 음반산업협회는 12월 Napster를 저작권 침해 방조 혐의로 제소했다. 이후 법정에서는 서비스 운영자가 이용자의 침해 행위를 얼마나 알고 통제할 수 있었는지, 중앙 검색 서버가 어떤 책임을 지는지가 쟁점이 된다. 당시 사건을 분석한 Harvard Journal of Law & Technology 논문은 Napster가 1999년 시작되고 같은 해 음반업계의 소송을 맞은 과정을 정리한다.

Napster는 오래 지속되지 못했지만 파일 공유, P2P 구조, 플랫폼 사업자의 책임과 디지털 콘텐츠의 유통 방식에 관한 논쟁을 인터넷 산업의 중심으로 끌어냈다.

Y2K 문제는 오래된 가정이 만드는 비용을 보여줬다

1999년 개발 현장에서는 2000년을 앞두고 Y2K 문제를 점검하고 수정하는 작업이 대규모로 진행됐다.

저장 공간을 아끼기 위해 연도를 두 자리로 기록한 프로그램은 00을 2000년이 아니라 1900년으로 해석할 수 있었다. 금융 이자, 보험 만기, 생산 일정, 항공 예약과 행정 시스템처럼 날짜 비교와 계산이 중요한 프로그램에서는 작은 표현 방식이 업무 전체의 오류로 이어질 가능성이 있었다.

개발 조직은 오래된 COBOL 프로그램과 데이터베이스, 내장 시스템을 조사하고 날짜 필드를 확장하거나 기준 연도를 정하는 보정 규칙을 적용했다. 수정한 코드뿐 아니라 다른 시스템과 주고받는 데이터, 백업과 복구 절차까지 시험해야 했다.

Y2K 대응은 눈에 띄는 신제품을 만드는 개발이 아니었다. 그러나 수십 년 동안 누적된 시스템의 가정을 찾아내고, 문서가 부족한 코드를 분석하며, 변경이 전체 업무에 미치는 영향을 시험하는 유지보수의 중요성을 드러냈다.

닷컴 열풍은 ‘인터넷 사업’이라는 이유만으로 기대를 끌어올렸다

1999년에는 전자상거래, 포털, 검색과 온라인 광고를 내세운 인터넷 기업에 투자가 집중됐다. 웹사이트 방문자와 회원 수, 빠른 시장 선점이 당장의 수익보다 중요한 평가 기준으로 제시되기도 했다.

서버와 네트워크, 데이터베이스를 구축하고 빠르게 서비스를 공개하려는 수요가 커지면서 웹 개발자의 역할도 확대됐다. 기업은 기존 업무를 웹으로 옮기거나 별도의 인터넷 사업 부문을 만들었고, 소프트웨어 업체들은 전자상거래와 포털 구축 도구를 내놓았다.

하지만 이용자가 늘면 언젠가 수익이 따라올 것이라는 가정, 경쟁사를 앞서기 위한 과도한 지출과 검증되지 않은 사업 모델도 함께 쌓였다. 그 모순은 2000년 닷컴 버블 붕괴 과정에서 본격적으로 드러난다.

국내의 1999년: ADSL과 PC방이 인터넷을 일상으로 옮겼다

국내 인터넷 환경은 1999년 빠르게 바뀌었다. 하나로통신은 4월 기존 전화선을 활용한 ADSL 상용 서비스를 시작했고, 한국통신과 두루넷 등 사업자들의 초고속인터넷 경쟁이 이어졌다.

9월의 전자신문 초고속인터넷 특집은 8월 말 고속 인터넷 가입자가 37만 5천 명에 이르렀으며, ADSL 가입자는 5월 2만 5천 명에서 8월 5만 6천 명으로 증가했다고 전한다. 당시에는 ISDN과 케이블 모뎀도 함께 경쟁했지만, 기존 전화선을 이용하면서 전화와 인터넷을 동시에 사용할 수 있는 ADSL이 빠르게 관심을 모았다.

대한민국 정책브리핑의 인터넷 역사는 1999년 국내 인터넷 이용자가 1,000만 명을 넘어섰다고 정리한다. 이용자 증가는 네트워크 접속 자체뿐 아니라 다음과 같은 개발 수요를 만들었다.

  • 포털의 검색·뉴스·메일·카페 서비스
  • 온라인 쇼핑몰과 결제 시스템
  • 게시판·채팅·커뮤니티 솔루션
  • 배너 광고와 이용자 통계
  • 온라인 게임 서버와 PC방 관리 프로그램

PC방은 전국적으로 급증했다. 1999년 10월 전자신문 보도는 PC방이 1만 곳을 넘어섰다고 전했다. 가정에 초고속 회선이 없는 이용자도 PC방에서는 StarCraft와 Lineage 같은 네트워크 게임, 웹 검색과 채팅을 빠른 회선으로 이용할 수 있었다.

인터넷 기업과 벤처에 대한 투자도 커졌다. 포털·전자상거래·콘텐츠 사업자는 이용자를 먼저 확보하기 위해 무료 메일과 커뮤니티, 이벤트를 확대했다. 개발 속도와 서버 확장 능력, 끊임없이 바뀌는 서비스 요구에 대응하는 역량이 사업 경쟁력과 직접 연결되기 시작했다.

국내의 1999년은 인터넷이 일부 연구자와 PC통신 이용자의 새로운 접속망을 넘어 대중적인 서비스 시장으로 전환된 해였다. 초고속 회선, PC방과 인터넷 벤처가 함께 성장하면서 웹 개발은 기업 홍보 페이지 제작에서 대규모 이용자가 매일 사용하는 서비스를 운영하는 일로 넓어졌다.

1999년을 한 문장으로 정리하면

1999년은 ECMAScript 3·HTML 4.01·XPath·XSLT가 웹 프로그래밍과 문서 처리의 규칙을 정리하고 J2EE가 기업용 서버 개발의 구조를 제시한 가운데, 국내에서는 ADSL·PC방·인터넷 벤처가 웹 서비스를 대중의 일상으로 옮긴 해였다.

웹 브라우저와 서버에서 작성할 수 있는 프로그램은 복잡해졌고, 표준은 문서 구조와 변환·접근성·통신 규칙까지 넓어졌다. 공개 소프트웨어는 데스크톱과 기업 시장으로 향했으며 Napster는 인터넷 서비스가 기존 산업의 유통 구조와 법적 책임을 바꿀 수 있음을 보여줬다.

2000년에는 이 성장의 낙관과 한계가 함께 드러난다. 닷컴 주가가 정점 이후 급락하고, Microsoft 독점 사건의 판결이 나오며, SOAP 1.1과 C# 발표가 새로운 기업 개발 경쟁을 예고한다. 국내에서는 초고속인터넷 가입자가 폭발적으로 증가하고 포털·온라인 게임·전자상거래 경쟁이 더욱 치열해진다.

참고 자료

이 글은 표준 기구와 프로젝트의 공식 문서, 법률·학술 자료, 1999년 당시 국내 기사와 정부 발간 자료를 우선해 작성했습니다. 가입자 수처럼 시점에 따라 달라지는 통계는 기준 월과 출처를 함께 표시했으며, 이후의 성공이나 실패를 당시 이미 확정된 결과처럼 서술하지 않았습니다.