1997년 스튜디오에서 한 디자이너가 말했습니다. “그냥 드래그하면 페이지가 만들어지네요?” Dreamweaver 화면을 본 개발자는 곧바로 코드 창을 확인하며 웃었죠.
같은 시기 팀들은 “소스 파일을 어디에 모아두지?”라며 CVS 서버를 세웠습니다.
2000년대엔 분산 버전 관리와 GitHub가 등장했고, 누구나 “브랜치를 파고 Pull Request로 리뷰하자”라고 외쳤습니다. 이어 Grunt와 Webpack이 “반복
작업은 자동화하자”, “모듈은 번들로 묶자”는 메시지를 남겼고, Netlify는 단추 한 번으로 전 세계에 배포하는 습관을 심었습니다.
이제는 Codespaces와 AI 동료가 “노트북 세팅 말고 바로 코드를 치자”, “설명만 하면 초안이 나온다”라고 속삭입니다. 아래 카드를 눌러 당시 제작자들이 어떤
문제를 겪었고, 어떤 도구로 해결했는지 가볍게 따라가 보세요.
연대기를 누르면 같은 화면에서 자세한 이야기를 읽을 수
있습니다.
1990s
“드래그하면 코드가 따라온다”
WYSIWYG 편집기와 초기 버전 관리가 퍼지며, 디자이너와 개발자가 한 화면에서 결과를 맞춰 보기
시작했습니다.
2000s
“브랜치 파고 PR로 모이자”
Git과 GitHub가 분산 협업을 정착시키며, 오픈소스와 사내 팀 모두 Pull Request와 Issue
중심으로 움직이기 시작했습니다.
2010s
“반복 작업은 스크립트가 맡습니다”
태스크 러너, 모듈 번들러, 자동 배포가 자리 잡으며, 복잡한 프런트엔드도 꾸준히 빌드·배포할 수 있게
됐습니다.
2020s
“설치 없이 개발하고, AI와 짝코딩”
클라우드 IDE와 AI 파트너가 온보딩과 코드 작성을 거들며, 제작 흐름이 다시 한 번 재편되고 있습니다.
더 깊이 읽을 거리
웹 제작 도구의 역사와 워크플로를 다룬 자료입니다. 버전 관리, 빌드, 배포, AI 협업을 더 탐구해 보세요.
“그냥 드래그했는데 HTML이 따라오네!” Dreamweaver는 디자이너와 개발자가 한 화면을 공유하게 만들었습니다.
광고 에이전시 스튜디오에서 한 디자이너는 Dreamweaver를 실행하고, 이미지를 드래그해 웹페이지를 구성했습니다. 오른쪽 창에 HTML 코드가 자동으로 생성되는 모습을 본
한 개발자는 “디자이너가 만든 결과를 바로 조정할 수 있겠네요.”라고 말했습니다.
팀은 템플릿 기능으로 페이지를 복제했고, 고객에게 빠르게 시안을 보여줄 수 있었습니다.
Dreamweaver는 시각 편집과 코드 뷰를 결합해, 비개발자도 웹 제작에 참여할 수 있게 했습니다. 이 경험은 이후 웹 IDE가 시각화 기능을 제공하는 계기가 되었습니다.
1999
CVS 호스팅, 원격 협업의 씨앗
팀이 “중앙 서버에 올려두자”라며 CVS 호스팅을 쓰기 시작하자, 원격 협업의 문이 열렸습니다.
오픈소스 프로젝트 팀은 SourceForge에 리포지터리를 만들고, CVS 명령어로 코드를 내려받았습니다. 주말 사이 자택에서 수정한 코드를 커밋해, 월요일 회의 때 “누가
언제 무엇을 바꿨는지”를 함께 살펴볼 수 있었습니다.
웹사이트 유지보수 회사도 CVS를 도입해, 변경 이력을 고객에게 투명하게 공개했습니다.
CVS 호스팅은 중앙 서버를 통한 버전 관리 문화를 확산시켰습니다. 팀은 충돌 해결과 리뷰를 배우며, 이후 Git으로 자연스럽게 넘어갈 준비를 하게 되었습니다.
2005
Git, 분산 버전 관리의 전환점
“로컬에서 마음껏 브랜치를 파도 된다!” Git은 분산 버전 관리의 전환점을 만들었습니다.
리눅스 커미터들은 Git을 시험하면서 “속도가 믿기 어렵다.”며 감탄했습니다. 커밋과 브랜치를 로컬에서 마음껏 만들 수 있고, 나중에 공유 서버에 푸시하면 된다는 사실이 큰
자유를 줬습니다.
웹 에이전시는 Git을 도입해 기능별 브랜치를 만들고, 고객 리뷰가 끝나면 병합하는 워크플로를 구축했습니다.
Git은 스냅샷 기반 저장과 분산 구조를 제공해, 오프라인에서도 버전 관리를 가능하게 했습니다. 빠른 브랜치 전환과 병합 도구가 실험을 장려하며 현대 협업의 토대를
만들었습니다.
2008
GitHub, 소셜 코딩의 무대
개발자들이 “PR 보내줘”라고 말하기 시작한 건 GitHub가 리뷰와 Issue를 한 무대에 올렸기 때문입니다.
런칭 초기, 한 개발자는 사이드 프로젝트를 GitHub에 올리고 친구에게 Pull Request로 리뷰를 요청했습니다. 브라우저에서 diff를 확인한 동료는 “이제 메일 첨부
없이도 리뷰가 되네요.”라고 말했다.
스타트업 팀은 Issue로 작업을 추적하고, Wiki로 문서를 공유하며 협업 파이프라인을 빠르게 정착시켰습니다.
GitHub는 Git 워크플로를 웹 인터페이스에 담아, 코드 리뷰와 문서 공유를 쉽게 했습니다. 이 모델은 이후 수많은 DevOps 도구가 따르는 기본 설계가 되었습니다.
2012
Grunt 0.4, 태스크 자동화의 시대
“버튼 한 번이면 린트·빌드 끝!” Grunt가 반복 작업을 스크립트로 묶는 문화를 열었습니다.
프런트엔드 팀은 Gruntfile을 작성해 SASS 컴파일과 이미지 압축을 한 번에 실행했습니다. 매번 반복하던 작업이 자동화되자 한 팀원은 “Deploy 전에 체크리스트를
손으로 돌리지 않아도 되네.”라고 말했습니다.
커뮤니티는 수많은 Grunt 플러그인을 공유했고, 프로젝트마다 자동화 파이프라인이 표준처럼 자리 잡았습니다.
Grunt는 명령줄 태스크를 구성 파일로 선언하게 해, 프런트엔드 워크플로에 자동화를 도입했습니다. 이는 이후 Gulp, npm scripts, CI 파이프라인으로 이어지는
사다리를 만들었습니다.
2014
Webpack 1.0, 모듈 번들링의 표준
팀이 “코드 스플리팅으로 첫 화면을 줄이자”라 말하며 Webpack을 표준 번들러로 삼았습니다.
스타트업은 Webpack 설정을 도입해 자바스크립트 모듈과 스타일, 이미지까지 하나의 그래프로 묶었습니다. 제품 출시 전, 코드 스플리팅을 적용한 뒤 초기 번들이 줄어든
그래프를 보고 팀은 안도의 한숨을 내쉬었습니다.
오픈소스 생태계는 로더와 플러그인을 나누어 공유했고, Webpack은 프런트엔드 빌드의 기본 도구로 자리 잡았습니다.
Webpack은 의존성 그래프를 분석해 번들을 생성하고, 동적 로딩을 지원했습니다. 복잡한 애플리케이션을 효율적으로 배포하려는 요구에 부합하며, 모듈 시스템의 중심이
되었습니다.
2016
npm left-pad 삭제, 전 세계 빌드를 멈추다
패키지 유지보수 갈등으로 11줄짜리 left-pad가 제거되자 수천 개 빌드가 동시에 실패했습니다.
2016년 3월 23일 새벽, 뉴욕 스타트업의 CI 서버가 빨간색으로 물들었습니다. “왜 `Cannot find module 'left-pad'`가 뜨지?” 한 개발자가
채팅에 올리자, 런던에 있던 동료가 “npm에서 삭제됐대. npm 팀이 복구 중이래.”라며 트위터 공지를 공유했습니다.
npm은 몇 시간 뒤 블로그에서 “패키지를 긴급 복구했다”고 발표했고, 2시간 넘게 멈춰 있던 배포 파이프라인이 다시 돌아가기 시작했습니다. 이 사건을 계기로 팀은 사설
레지스트리와 락 파일을 도입하며 외부 의존성 관리 계획을 다시 세웠습니다.
npm은 이번 사건을 계기로 패키지 소유권 정책을 개정하고, 핵심 패키지에 대한 퇴출 제한 조항을 마련했습니다. left-pad 사태는 공급망 리스크를 뚜렷하게 드러내며,
많은 조직이 레지스트리 미러, 라이브 패치 전략, 서명 검증을 도입하는 계기가 되었습니다.
2016
Netlify, 빌드와 배포를 한 번에
“PR에 미리보기 링크가 따라오네?” Netlify는 깃 연동 배포를 버튼 한 번으로 만들었습니다.
콘텐츠 팀은 GitHub 저장소를 Netlify에 연결하고, Pull Request가 열릴 때마다 미리보기를 자동 생성했습니다. 마케터는 “링크만 클릭하면 새 버전을 볼 수
있다.”며 검수 속도가 빨라졌다고 전했습니다.
엔지니어는 서버 구성 없이도 폼 핸들링과 Edge 함수가 작동하는 것을 확인했습니다.
Netlify는 빌드 파이프라인, CDN, 서버리스 기능을 묶어 JAMstack 워크플로를 보급했습니다. 배포 자동화가 쉬워지면서, 소규모 팀도 안정적으로 글로벌 서비스를
운영할 수 있게 되었습니다.
신규 입사자는 노트북 설정 없이 Codespaces를 열고, `npm install`이 이미 끝난 상태에서 작업을 시작했습니다. 리드 개발자는 “환경 맞추는 시간을 하루 이상
줄였어요.”라고 보고했습니다.
페어 프로그래밍 중에는 Live Share를 활용해 브라우저에서 바로 코드를 편집하며, 리뷰 사이클이 단축됐습니다.
Codespaces는 컨테이너 기반 개발 환경을 즉시 제공해, 온보딩과 협업을 단순화했습니다. 인프라 관리 없이도 동일한 개발 환경을 재현할 수 있다는 점이 큰 장점으로
꼽혔습니다.
2021
Codecov 공급망 사고, CI 스크립트를 다시 보다
Bash Uploader가 공격자에게 변조되면서 수많은 저장소의 비밀 값이 노출될 위험에 처했습니다.
2021년 4월, 샌프란시스코 SaaS 팀의 한 DevOps 엔지니어는 고객사로부터 “Codecov 스크립트가 다르게 동작한다”는 알림을 받았습니다. 곧 발표된 사고
보고서에는 “익명의 공격자가 2021년 1월 31일 이후 Bash Uploader를 변조했다”는 문장이 적혀 있었고, 팀 채널에는 “CI에서 Git 토큰이 외부로 전송됐을
수도 있다”는 경고가 올라왔습니다.
사내 보안 대응 회의에서 매니저는 “지금 바로 비밀 키를 교체하고, CI 스크립트 해시를 검증하도록 하세요.”라고 지시했습니다. 글로벌 기업들도 일제히 토큰을 회전하고,
서명된 아티팩트만 실행하도록 정책을 강화했습니다.
Codecov는 침해 사실을 공식 블로그와 SEC 신고(2021년 4월 15일)로 알렸습니다. 이 사건은 CI/CD 파이프라인의 공급망 위험을 재조명했고, 많은 팀이 스크립트
무결성 검증, 최소 권한 비밀 관리, 감사 로그 모니터링을 도입하는 계기가 되었습니다.
2023
AI 코드 동료, 개발 프로세스에 들어오다
“함수 설명만 했는데 테스트가 짜였어!” AI 코드 동료가 에디터 속 파트너로 자리 잡았습니다.
팀은 에디터에 AI 플러그인을 설치하고, 함수 설명을 입력해 자동 완성 제안을 받았습니다. 주니어 개발자는 “테스트 코드 뼈대를 바로 생성해 줘서 시작이 쉬워졌어요.”라고
말했다.
코드 리뷰 단계에서 AI가 변경 요약을 작성하며, 시니어 리뷰어는 더 중요한 로직 검증에 집중할 수 있게 됐습니다.
AI 보조 도구는 자연어 이해와 코드 생성을 결합해, 개발자의 반복 작업을 줄였습니다. 이는 생산성과 코드 품질 개선에 대한 기대를 높이며, 웹 제작 과정 역시 빠르게
변화시키고 있습니다.