2000년 개발 연대기: 인터넷의 거품은 꺼지고 서버 기술은 깊어졌다
닷컴 버블이 정점을 지나 무너지는 동안 PHP 4·Python 2·Java 1.3이 성장하고 SOAP·C#·.NET이 웹 서비스와 새로운 서버 개발 경쟁을 예고한 2000년을 살펴봅니다.
2000년은 인터넷 산업의 낙관이 현실의 검증을 받기 시작한 해였다.
3월까지 기술주와 인터넷 기업의 가치는 가파르게 올랐지만, 수익을 만들지 못하는 사업 모델에 대한 의문이 커지면서 주가는 급락하기 시작했다. 웹사이트를 열고 이용자를 모으면 기업 가치가 따라온다는 믿음만으로는 더 이상 충분하지 않았다.
그러나 닷컴 버블의 균열이 인터넷 기술의 후퇴를 뜻하지는 않았다. PHP 4와 Python 2.0은 서버와 응용 프로그램 개발 능력을 넓혔고, Java 1.3은 실행 성능과 기업 환경을 다듬었다. SOAP 1.1은 XML 메시지로 서로 다른 시스템을 연결하는 방법을 제시했다. Microsoft는 C#과 .NET을 발표하며 Windows 개발 도구와 웹 서비스를 하나의 새 플랫폼으로 재구성하기 시작했다.
국내에서는 초고속인터넷 가입자가 수백만 명 규모로 늘었다. 포털과 온라인 게임, 전자상거래 서비스는 더 많은 이용자를 처리해야 했고, 개발의 관심도 웹페이지 제작에서 서버 성능·데이터·운영 안정성으로 이동했다.
2000년은 인터넷 기업의 기대가 시장의 검증을 받는 동안, 실제 서비스를 지속적으로 운영하기 위한 언어·서버·분산 시스템 기술은 오히려 더 구체적으로 발전한 해였다.
먼저 보는 2000년
| 영역 | 2000년의 흐름 |
|---|---|
| 시장 | NASDAQ 정점 이후 닷컴 버블 붕괴 시작 |
| 서버 웹 | Zend Engine 기반 PHP 4.0 공개 |
| 프로그래밍 언어 | Python 2.0과 C# 등장 |
| Java | J2SE 1.3이 HotSpot과 주요 API를 기본 플랫폼에 통합 |
| 분산 시스템 | SOAP 1.1이 W3C Note로 공개 |
| Microsoft 플랫폼 | .NET 비전과 Visual Studio.NET·.NET Framework 첫 베타 공개 |
| 운영체제 | 기업용 Windows 2000과 가정용 Windows Me 출시 |
| 공개 소프트웨어 | MySQL이 GPL을 채택 |
| 국내 | 초고속인터넷 300만 가입자 돌파, 포털·게임·전자상거래 경쟁 확대 |
닷컴 버블은 정점을 지나 무너지기 시작했다
NASDAQ 종합지수는 2000년 3월 10일 5,048.62로 정점을 기록했다. 1999년 한 해에만 지수가 86% 상승할 정도로 기술주와 인터넷 기업에 대한 기대가 컸다. 그러나 정점 이후 시장은 급격한 하락과 변동을 겪었고, 많은 닷컴 기업의 자금 조달 환경이 나빠졌다.
Goldman Sachs의 닷컴 버블 역사는 당시 인터넷 기업들이 시장 점유율을 먼저 확보하기 위해 광고와 고객 유치에 대규모 자금을 사용했으며, 전통적인 수익성보다 성장 기대를 중심으로 평가받았던 상황을 정리한다.
버블 붕괴는 한 날짜에 모든 기업이 사라진 사건이 아니었다. 주가 하락과 투자 축소, 기업의 폐업과 인수는 2001년과 2002년까지 이어졌다. 2000년은 그 전환이 시작된 해였다.
개발 조직에도 변화가 나타났다.
- 이용자 수만 늘리는 기능보다 매출과 비용을 연결하는 기능이 중요해졌다.
- 서버와 네트워크를 무조건 증설하기보다 운영 효율을 따지기 시작했다.
- 빠른 출시뿐 아니라 장애 대응과 데이터 보존이 사업 생존의 조건이 됐다.
- 외부 투자에 의존하던 프로젝트는 축소되거나 중단됐다.
인터넷이라는 기술의 가능성이 사라진 것이 아니라, 인터넷을 사용한다는 사실만으로 사업의 성공을 보장받던 시기가 끝나기 시작한 것이다.
PHP 4는 동적 웹사이트를 더 큰 응용 프로그램으로 확장했다
PHP 4.0.0은 5월 22일 공개됐다. PHP 공식 배포 기록과 PHP의 역사에서 출시일과 개발 배경을 확인할 수 있다.
PHP 4의 핵심은 Andi Gutmans와 Zeev Suraski가 개발한 Zend Engine이었다. PHP 3보다 복잡한 응용 프로그램을 효율적으로 실행하고 언어 핵심부를 모듈화하려는 목적으로 다시 설계됐다.
PHP 4에는 다음과 같은 변화가 포함됐다.
- 실행 성능을 개선한 Zend Engine
- HTTP 세션 관리
- 출력 버퍼링
- 더 많은 웹 서버 환경 지원
- 사용자 입력을 다루는 방식과 언어 구성 개선
세션 기능은 HTTP 요청 사이에서 로그인 상태와 장바구니 같은 데이터를 유지하는 작업을 단순화했다. 출력 버퍼링은 프로그램이 생성한 내용을 바로 보내지 않고 모아 처리할 수 있게 했다. 이러한 기능은 PHP가 작은 홈페이지의 일부를 동적으로 만드는 도구에서 쇼핑몰과 커뮤니티 같은 전체 웹 응용 프로그램을 구성하는 언어로 확장되는 데 중요했다.
PHP는 Apache와 MySQL을 함께 사용하는 공개 웹 개발 환경에서 특히 빠르게 확산됐다. 설치와 배포가 비교적 간단하고 HTML 안에서 바로 서버 코드를 작성할 수 있다는 점은 빠른 서비스 출시가 중요한 인터넷 기업과 소규모 개발 조직에 매력적이었다.
Python 2.0과 PEP가 언어의 발전 절차를 정리했다
Python 2.0은 10월 16일 공개됐다. Python.org의 공식 릴리스 페이지에는 출시일과 변경 사항이 보존돼 있다.
주요 기능에는 리스트 컴프리헨션, +=와 같은 복합 대입 연산자, 순환 참조를 처리하는 가비지 컬렉션, Unicode와 XML 지원 개선, zip() 함수 등이 있었다.
기능 변화만큼 중요한 것은 Python Enhancement Proposal, 즉 PEP 절차가 도입된 일이었다. PEP는 새로운 기능이나 개발 절차를 제안할 때 기술 사양과 도입 이유를 문서로 남기고, 공동체가 이를 토론해 결정을 내리도록 했다.
공개 소프트웨어 프로젝트의 규모가 커지면 코드만 공유해서는 방향을 정하기 어렵다. 누가 어떤 문제를 해결하려 하는지, 대안은 무엇인지, 최종 결정은 왜 내려졌는지를 보존하는 절차가 필요하다. PEP는 Python의 언어 설계와 공동체 의사결정을 연결하는 장치가 됐다.
Python 2 계열은 이후 오랫동안 사용되지만, 이 글에서는 이후의 성공을 2000년 당시 이미 확정된 결과로 다루지 않는다. 당시 Python 2.0은 기존 확장 모듈을 다시 빌드해야 하는 호환성 문제와 라이선스 논쟁도 함께 안고 출발했다.
Java 1.3은 새 문법보다 실행 환경을 다듬었다
J2SE 1.3은 2000년 5월 공개됐다. Oracle의 Java Virtual Machine Specification 버전 연혁은 Java 1.3의 공개 시점을 2000년 5월로 기록한다.
Java 1.3은 언어 문법을 크게 바꾸기보다 실행 환경과 기본 라이브러리를 정리한 버전이었다.
- HotSpot Java Virtual Machine의 기본 통합
- Java Naming and Directory Interface 포함
- Java Sound API 추가
- 디버깅 기반인 Java Platform Debugger Architecture 제공
- RMI와 보안·그래픽·성능 개선
HotSpot은 실행 중 자주 사용되는 코드를 분석해 최적화하는 적응형 컴파일 방식을 적용했다. 서버와 데스크톱에서 Java의 실행 성능을 개선하는 일이 플랫폼의 주요 과제가 됐음을 보여준다.
1999년 발표된 J2EE가 기업용 서버 API와 컴포넌트 구조를 묶었다면, J2SE 1.3은 그 아래에서 동작하는 공통 실행 기반을 안정화하는 역할을 했다. Java 개발은 언어 기능뿐 아니라 가상 머신, 표준 라이브러리와 서버 플랫폼 전체를 함께 선택하는 일이 됐다.
SOAP 1.1은 XML로 시스템 사이의 메시지를 전달했다
SOAP 1.1은 5월 8일 W3C Note로 공개됐다. 이 단계는 W3C의 공식 Recommendation과는 다르며, 여러 업체가 작성한 기술 문서를 W3C가 공개한 상태였다.
SOAP은 분산 환경에서 정보를 교환하기 위한 XML 기반 프로토콜을 제안했다.
- 메시지의 범위와 처리 방식을 나타내는 Envelope
- 응용 프로그램의 데이터를 표현하는 인코딩 규칙
- 원격 프로시저 호출과 응답을 나타내는 규칙
- HTTP 등 기존 전송 프로토콜 위에서 메시지를 전달하는 방식
기존 분산 객체 기술인 CORBA, DCOM과 Java RMI는 언어와 플랫폼, 방화벽 환경에 따른 제약이 있었다. SOAP은 텍스트 기반 XML 메시지와 웹에서 이미 사용하던 HTTP를 활용해 서로 다른 시스템을 연결하려 했다.
당시 ‘웹 서비스’라는 개념은 사람이 브라우저로 이용하는 웹페이지가 아니라, 프로그램이 네트워크를 통해 다른 프로그램의 기능을 호출하는 방식으로 사용되기 시작했다. 이후 WSDL과 UDDI 같은 규격이 결합되며 기업 시스템 통합의 중요한 흐름을 형성한다.
C#과 .NET이 Windows 개발의 새 방향을 발표했다
Microsoft는 6월 22일 .NET 비전과 로드맵을 발표했다. Windows와 서버, Office, MSN과 Visual Studio를 인터넷 프로토콜과 XML 웹 서비스 중심의 플랫폼으로 연결하려는 구상이었다.
6월 26일에는 C#을 공식 발표했다. Anders Hejlsberg 등이 설계한 C#은 객체지향 언어로, C와 C++ 개발자가 익숙한 문법을 사용하면서 .NET 실행 환경의 형식 안정성과 자동 메모리 관리를 활용하도록 만들어졌다.
7월 Professional Developers Conference에서 C#과 .NET Framework의 초기 기술 미리보기가 공개됐고, 11월에는 Visual Studio.NET과 .NET Framework Beta 1이 배포됐다. Microsoft는 같은 달 C#과 Common Language Infrastructure 규격을 Ecma International에 제출했다. .NET Beta 1 발표 자료에서 이 과정을 확인할 수 있다.
.NET은 여러 언어의 코드를 공통 중간 언어와 런타임에서 실행하고, 같은 기본 클래스 라이브러리와 형식 체계를 사용하도록 설계됐다. C#뿐 아니라 Visual Basic 등 서로 다른 언어가 같은 플랫폼 위에서 상호 운용하는 구상이었다.
중요한 구분도 필요하다. 2000년은 .NET과 C#의 발표 및 베타 단계다. .NET Framework 1.0과 Visual Studio .NET의 정식 출시는 2002년에 이뤄진다.
Windows 2000은 기업 환경을 NT 계열로 모았다
Windows 2000은 2월 17일 전 세계에 출시됐다. Windows NT 계열을 바탕으로 Professional, Server와 Advanced Server 제품군이 제공됐다.
가정용 Windows 98과 달리 Windows 2000은 기업의 데스크톱과 서버를 중심으로 설계됐다. Active Directory를 통해 사용자와 컴퓨터, 정책과 네트워크 자원을 디렉터리 구조로 관리하고, Kerberos 인증과 그룹 정책을 제공했다.
개발·운영 조직에는 응용 프로그램 하나만 배포하는 것이 아니라 계정과 권한, 도메인, 서버와 클라이언트를 조직 전체에서 관리하는 기반이 중요해졌다. Windows 2000과 SQL Server, IIS, COM+는 Microsoft 계열 기업 시스템을 구성하는 주요 조합이 됐다.
9월에는 가정용 Windows Me도 출시됐다. 같은 해 서로 다른 기반의 기업용 Windows 2000과 가정용 Windows Me가 공존했다는 사실은 Microsoft의 운영체제 계보가 아직 완전히 통합되지 않았음을 보여준다.
MySQL은 GPL과 이중 라이선스 모델을 선택했다
MySQL은 2000년 자유 배포 라이선스를 GNU General Public License로 변경했다. MySQL 30주년 공식 연혁은 2000년 GPL 채택을 주요 이정표로 기록한다.
GPL로 배포되는 버전은 소스 코드의 이용과 수정·재배포를 허용하되, 파생 저작물에도 같은 라이선스 조건을 적용하도록 했다. MySQL AB는 GPL 조건을 적용하기 어려운 상용 제품에는 별도 상용 라이선스를 판매하는 이중 라이선스 전략을 사용했다.
이는 공개 소프트웨어와 사업이 서로 반대되는 선택이 아님을 보여주는 모델이었다. 개발자는 PHP·Apache·Linux와 함께 MySQL을 자유롭게 사용해 웹 서비스를 만들 수 있었고, 기업은 필요한 경우 상용 라이선스와 지원을 구매할 수 있었다.
MySQL의 GPL 전환은 이른바 LAMP 환경의 각 구성 요소가 공개 소프트웨어로 결합되는 흐름을 더욱 분명하게 만들었다.
국내의 2000년: 초고속인터넷이 서비스의 규모를 바꿨다
국내 초고속인터넷 시장은 2000년 폭발적으로 성장했다. 두루넷의 케이블 인터넷과 하나로통신의 ADSL에 이어 한국통신과 여러 사업자가 경쟁하면서 서비스 가능 지역과 가입자가 빠르게 늘었다.
12월 전자신문의 2000년 시장 결산은 초고속인터넷 가입자가 300만 명을 넘어섰다고 전했다. 같은 달 별도 보도에서는 11월 말 가입자가 350만 명을 돌파했다고 집계해, 통계 기준과 집계 시점에 따라 수치가 달랐지만 성장 속도가 매우 빨랐다는 점은 분명하다.
상시 접속에 가까운 빠른 회선은 인터넷 서비스의 사용 방식을 바꿨다.
- 포털에 머무르며 뉴스·메일·카페·검색을 연속해서 이용
- 온라인 게임의 클라이언트와 패치 파일 배포
- 사진과 음악, 동영상 등 큰 콘텐츠 전송
- 쇼핑몰의 상품 이미지와 결제·주문 기능 확대
- 메신저와 실시간 커뮤니티 사용 증가
다음은 한메일을 기반으로 포털과 카페·전자상거래를 확장했고, 네이버와 야후코리아·라이코스코리아 등은 검색과 콘텐츠 경쟁을 벌였다. 온라인 게임에서는 Lineage와 StarCraft가 PC방 이용을 이끌었고, 게임사는 동시 접속자와 지속적인 업데이트를 처리하는 서버 운영 능력을 축적했다.
개발자에게 이용자 증가는 곧 기술적 문제였다. 한 대의 웹 서버와 단순한 게시판으로 감당하기 어려운 트래픽이 발생했고, 데이터베이스 병목과 세션 관리, 로드밸런싱, 로그 분석과 장애 복구가 중요한 업무가 됐다. 서비스가 밤낮없이 운영되면서 개발과 운영의 경계도 가까워졌다.
닷컴 버블의 충격은 국내에도 전달됐다. 인터넷 기업은 회원 수와 방문자만으로 평가받기 어려워졌고, 광고·전자상거래·유료 콘텐츠와 게임 이용료처럼 실제 매출을 만드는 모델을 증명해야 했다. 다만 국내에서는 초고속인터넷 이용자가 계속 빠르게 늘고 있었기 때문에 인터넷 서비스 자체의 성장과 투자 시장의 조정이 동시에 진행됐다.
2000년을 한 문장으로 정리하면
2000년은 닷컴 버블이 정점을 지나며 인터넷 사업의 수익성과 지속 가능성이 시험대에 오른 한편, PHP 4·Python 2·Java 1.3·SOAP·C#·.NET이 실제 서비스를 구축하고 시스템을 연결하기 위한 다음 개발 기반을 제시한 해였다.
시장에서는 인터넷이라는 이름만으로 높은 평가를 받던 기업들이 흔들렸다. 기술에서는 동적 웹의 성능, 언어 공동체의 의사결정, 가상 머신의 최적화, XML 기반 시스템 통합과 다중 언어 런타임이 구체화됐다. 국내의 빠른 초고속인터넷 확산은 이러한 기술을 대규모 서비스 운영의 현실적인 문제로 만들었다.
2001년에는 닷컴 기업의 구조조정이 계속되는 가운데 Windows XP와 Mac OS X가 출시되고, Eclipse와 Wikipedia가 등장한다. 웹 표준에서는 SVG 1.0과 XML Schema가 권고안이 되며, 소프트웨어 개발과 지식 생산에서 공개 공동체의 역할이 더욱 커진다.
참고 자료
- Goldman Sachs, 2000년 닷컴 버블 붕괴의 역사
- PHP, PHP 4.0.0 공식 배포 기록
- PHP Manual, PHP 4와 Zend Engine의 역사
- Python.org, Python 2.0 릴리스와 변경 사항
- Oracle, Java Virtual Machine Specification의 버전 연혁
- Oracle, Java SE 1.3 배포 아카이브
- W3C, SOAP 1.1
- Microsoft, .NET 비전과 로드맵 발표
- Microsoft, C# 발표
- Microsoft, Visual Studio.NET·.NET Framework Beta 1 및 Ecma 제출 발표
- Microsoft, Windows 2000 출시 일정 발표
- Microsoft, Windows Me 출시 발표
- MySQL, 30주년 공식 연혁
- 전자신문, 2000년 정보통신·인터넷·게임 시장 결산
- 전자신문, 2000년 말 초고속인터넷 가입자 현황
이 글은 언어·표준·제품의 공식 기록과 당시 발표 자료, 금융기관의 역사 자료 및 2000년 국내 기사를 우선해 작성했습니다. 베타 공개와 정식 출시를 구분했으며, 초고속인터넷 통계처럼 기준 시점에 따라 달라지는 수치는 출처의 집계 시점을 함께 설명했습니다.