cygwin을 쓰고, 가비지에서 주소 사서 사이트 만들던 기억
지금이야 깃허브 제공 주소로 딱 올리면 기초적 베포는 끝이지만
2015년 2월. 대학 입학 한달 전의 나는 설날에 받은 용돈으로 가비지 사이트 주소를 사서..
(co.kr 이 아니라 wb.?? 뭐였는데, 아무도 안들어 오는 주소였는데도 2,3만원은 했었음. 심지어 영구적인 것도 아님.)
그렇게 cygwin으로 뭣도 모르는 실행언어, 설치 오류 등을 해결해가면서 만들고 베포까지 여러 밤을 꼴딱 새웠던 기억이 난다.(끝내 aws 인스턴스를 통해 베포까지 성공했었음)
왜 cygwin 같은 것들을 지금은 사용 안하는지, 궁금해서 챗gpt한테 물어보았다.
2018년에 Cygwin을 사용하여 웹 개발 환경을 구성한 것에 대한 기억은 충분히 타당한 상황입니다. Cygwin은 Windows 운영 체제에서 UNIX 또는 Linux 환경을 모방하여 제공하는 소프트웨어입니다. 이를 통해 Windows 사용자가 UNIX 기반의 명령어나 도구를 사용할 수 있게 되며, UNIX 기반의 개발 환경을 필요로 하는 소프트웨어 개발 작업을 Windows에서도 수행할 수 있게 됩니다.
웹 개발의 경우, HTML, CSS, JavaScript와 같은 기술을 사용하여 웹 페이지를 만듭니다. 이러한 작업은 기본적으로 텍스트 편집기와 웹 브라우저만 있으면 충분히 수행할 수 있습니다. 그러나 웹 개발 프로젝트가 커지면서 서버 사이드 스크립팅이나 데이터베이스 관리, 버전 관리 시스템 사용 등 추가적인 작업이 필요해질 수 있습니다. 이때 UNIX 또는 Linux 환경에서 제공하는 다양한 도구와 명령어가 유용하게 사용될 수 있습니다.
Cygwin을 사용했던 주된 이유는 아마도 다음과 같았을 것입니다:
- UNIX/Linux 명령어 사용: Cygwin을 통해 grep, sed, awk, make와 같은 UNIX/Linux 명령어를 Windows에서 사용할 수 있게 되어, 개발 과정에서 필요한 다양한 작업을 보다 효율적으로 처리할 수 있습니다.
- 스크립트 실행 및 개발 도구 사용: 특정 스크립트나 개발 도구가 UNIX/Linux 환경에서만 실행되는 경우, Cygwin을 통해 이러한 환경을 모방하여 필요한 도구를 사용할 수 있습니다.
- 학습 및 호환성: UNIX/Linux 기반 개발에 익숙한 개발자가 Windows 환경에서 작업해야 하는 경우, Cygwin을 사용하여 익숙한 환경을 구성할 수 있습니다. 또한, 다양한 운영 체제에서의 개발 경험을 넓히고자 하는 목적도 있을 수 있습니다.
그럼에도 불구하고, HTML 작성 자체는 Cygwin 없이도 Windows에서 제공하는 기본 텍스트 편집기(예: 메모장)나 다른 개발용 텍스트 편집기(예: Visual Studio Code, Sublime Text 등)를 사용하여 충분히 가능합니다. Cygwin을 사용했다면, 그것은 웹 개발을 넘어서서 보다 복잡한 서버 사이드 스크립팅, 데이터베이스 관리, 또는 UNIX/Linux 환경에서의 특정 개발 도구나 스크립트를 사용하고자 하는 목적에서 비롯된 것일 수 있습니다.
2015년과 비교했을 때, 현재 웹 개발 및 배포 환경이 많이 변화한 여러 가지 이유가 있습니다. 기술의 진보, 사용자의 요구 사항 변화, 그리고 개발 및 배포 프로세스의 효율성 향상을 위한 새로운 도구와 서비스의 출현 등이 그 이유 중 일부입니다. 여기 몇 가지 변화된 점을 살펴보겠습니다:
- 클라우드 서비스의 발전과 접근성 향상: AWS, Google Cloud, Azure와 같은 클라우드 서비스 제공업체들은 사용하기 쉬운 관리형 서비스를 지속적으로 확장해왔습니다. 이제는 사용자가 서버를 직접 관리하지 않고도 웹 애플리케이션을 배포할 수 있는 다양한 옵션(예: AWS Amplify, Google Firebase, Netlify, Vercel 등)을 제공합니다.
- 개발 도구와 프레임워크의 발전: 현대적인 웹 개발 프레임워크와 라이브러리(예: React, Vue, Angular 등)는 개발 과정을 훨씬 쉽고 빠르게 만들어줍니다. 이러한 도구들은 종종 개발 서버를 내장하고 있어 로컬 개발 환경에서의 실시간 변경 사항 미리보기를 간편하게 해줍니다.
- 가상화 및 컨테이너화 기술의 보급: Docker와 Kubernetes와 같은 컨테이너화 기술의 등장으로 개발자는 애플리케이션을 더 쉽게 배포하고 관리할 수 있게 되었습니다. 이 기술들은 환경에 구애받지 않고 일관된 애플리케이션 실행을 보장하며, Cygwin을 사용하여 환경을 모방할 필요성을 줄여줍니다.
- 개발 환경의 통합과 간소화: Windows Subsystem for Linux (WSL), Git Bash, PowerShell과 같은 도구들은 Windows에서도 Linux 명령어를 직접 사용할 수 있게 해주어, Cygwin에 대한 의존도를 줄였습니다. 특히 WSL은 진짜 Linux 커널을 사용하여 Windows 상에서 Linux 배포판을 실행할 수 있게 해줍니다.
- 도메인 구입 및 관리의 간소화: 도메인 이름을 구입하고 관리하는 과정이 더 쉬워졌습니다. 많은 웹 호스팅 서비스와 클라우드 서비스 제공업체들이 도메인 등록을 직접 제공하며, 설정 과정을 간소화하여 비전문가도 쉽게 웹사이트를 배포하고 관리할 수 있게 되었습니다.
- 교육 자료와 커뮤니티의 성장: 온라인 교육 플랫폼, 포럼, 문서화된 가이드, 튜토리얼 등의 자료가 대폭 늘어나면서 새로운 기술을 배우고 적용하는 것이 예전보다 훨씬 쉬워졌습니다.
이러한 변화들은 개발과 배포 과정을 더 간편하고 효율적으로 만들어주었으며, 개발자들이 새로운 기술과 트렌드에 더 쉽게 접근하고 적응할 수 있게 해줍니다.
예, 그 말씀에 일정 부분 동의합니다. 과거에는 웹 개발을 배우는 과정에서 백엔드 개발과 배포(deployment) 기술에 더 많은 초점을 맞추었을 가능성이 큽니다. 이는 당시의 기술 환경과 개발 문화, 그리고 웹 기술 자체의 복잡성과 범위 때문일 수 있습니다. 몇 가지 관련된 측면을 살펴보겠습니다:
- 통합 개발 환경의 부족: 과거에는 현재와 같이 개발자 친화적인 도구와 플랫폼이 충분히 발달하지 않았습니다. 따라서, 웹 개발을 배우는 과정에서 개발 환경을 설정하고, 서버를 구성하며, 애플리케이션을 배포하는 데 더 많은 시간과 노력이 필요했습니다.
- 웹 기술의 진화: HTML과 CSS는 웹 페이지의 구조와 스타일을 정의하는 기본 기술이지만, 초기 웹 개발 교육에서는 동적인 웹 애플리케이션을 만드는 데 필요한 백엔드 로직과 데이터베이스 상호작용에 더 큰 비중을 뒀을 수 있습니다. 이는 웹 애플리케이션의 기능성과 상호작용성을 구현하는 데 필수적인 부분이기 때문입니다.
- 자원의 접근성: 과거에는 클라우드 서비스나 관리형 호스팅 솔루션이 지금처럼 널리 사용되지 않았습니다. 따라서, 개발자가 직접 서버를 구매하거나 렌트해야 했고, 서버 구성, 유지 보수, 보안 업데이트 등을 스스로 관리해야 했습니다. 이러한 과정은 배포 과정을 더 복잡하고 어렵게 만들었습니다.
- 커리큘럼과 자료의 한계: 시간이 지남에 따라 웹 기술은 급속도로 발전해 왔습니다. 초기에는 웹 개발 교육 자료가 상대적으로 제한적이었고, 백엔드 개발과 같은 복잡한 주제에 더 많은 초점을 맞춘 것일 수 있습니다. 반면, 오늘날에는 프론트엔드 개발, 사용자 경험(UX) 디자인, 반응형 웹 디자인 등에 대한 교육 자료가 풍부하게 제공됩니다.
요약하자면, 시간이 지나면서 웹 개발 교육은 점점 더 포괄적이고 균형 잡힌 방향으로 발전해 왔습니다. 현재는 프론트엔드와 백엔드 개발 모두 중요시되며, 배포 프로세스도 훨씬 간소화되고 자동화되었습니다. 이로 인해 개발자들은 기술 스택 전반에 걸쳐 더 깊은 지식을 쌓고, 더 넓은 범위의 프로젝트를 효율적으로 진행할 수 있게 되었습니다.