우리는 인터넷 세상에서 살고 있습니다. 잘 만들어진 플랫폼을 이용해 다양한 정보를 교환하곤 합니다. 간혹, 자신만의 멋진 홈페이지를 원하게 되는 경우도 있습니다.
이런 경우에 활용할 수 있는 방법은 크게 2가지로 나뉠 수 있습니다. 플랫폼을 이용하는 방법과 자신이 직접 사이트를 만들고 웹 서버를 개설하는 것입니다.
앞에서 언급한 두 가지 방법은 저마다 장단점을 분명하게 가지고 있습니다.
1. 플랫폼을 이용하는 방법.
잘 만들어진 플랫폼을 이용하는 방법은 우리에게 편리함을 안겨줍니다. 더불어, 바쁜 일상의 소중한 시간을 절약할 수 있게 도움을 줄 수 있습니다.
하지만, 이렇게 만들어진 홈페이지는 정해진 양식이 존재하는 경우가 있습니다. 이를 우리는 템플릿(template)이라 부릅니다.
구성된 양식은 빠르게 홈페이지 제작을 도와줄 수 있지만, 결과적으로 개인의 취향이 드러나는 개성 있는 사이트 구성에는 한계성을 보여줄 수 있습니다.
2. 스스로 사이트를 제작하고, 웹 서버를 가동하는 방법.
해당되는 방법은 위에서 언급한 장단점의 정확하게 반대를 의미할 수 있습니다. 직접 사이트를 제작한다는 것은 결국, 코딩과 디자인을 직접 한다는 것을 의미하기 때문입니다.
html, css, javascript, php 또는 python, 기타 웹 프로그래밍 언어를 활용해 자신만의 고유한 개성을 드러낼 수 있는 사이트를 만들게 됩니다.
이런 방법의 가장 큰 장점은 자신이 원하는 사이트를 정확하게 구성할 수 있다는 것입니다. 물론, 사용자의 능숙한 정도에 따라 사이트를 구성하는 시간은 차이를 보일 수 있습니다.
반면, 이 방법을 선택한 사용자가 프로그래밍 언어에 익숙하지 않다면, 많은 어려움을 겪게 됩니다. 아무리 똑똑한 사람이라도 말이죠.
알 수 없는 에러와 문제점에 직면하게 될 것이고, 이를 해결하기 위해서 다양한 문서를 찾아보게 될 것입니다.
또는, 원하는 기능과 디자인을 표현하기 위해서 많은 노력과 시간을 할애하게 될 것입니다.
이런 과정이 반복되면, 으레 지치고 힘들어질 수 있습니다. 누군가는 포기를 할 수도 있으며, 적당하게 타협할 수도 있습니다. 결과적으로 원하는 사이트의 모습이 아닐 수도 있습니다.
그럼에도 불구하고 많은 사람들은 자신만의 어떤 것을 얻기를 원합니다. 이는 자신의 홈페이지 사이트에도 적용된다고 할 수 있습니다.
사람들은 ‘자신의 것’에 대한 소중함을 알고 있기 때문입니다. 만약, 자신의 개성이 무엇보다 중요하게 나타나길 바란다면 스스로 사이트를 제작하는 방법을 선택하는 것이 최선일 수 있습니다.
물론, 쉽지 않은 일임에 분명하지만 시간과 노력을 들여 천천히 익혀간다면 어느 순간 익숙해짐을 느낄 수 있을 것입니다. 이때부터 무서운 속도로 실력이 늘어나게 됩니다.
✔ 홈페이지 사이트를 만드는 간략한 과정.
스스로의 힘으로 코딩을 통해 홈페이지를 만든다는 것은 결코 만만하게 볼 일은 아닙니다. 하지만, 그것이 불가능을 의미하는 것 또한 아닙니다.
속도는 느려도 확실하게 쌓아갈 수 있다는 것입니다. 많은 실수와 학습을 통해 조금씩 원하는 모습의 사이트를 구성할 수 있습니다.
홈페이지를 만들기 위해서 필수적으로 알아야하는 것이 있습니다. 바로, html, css, 웹서버 프로그래밍 언어, 웹서버 언어입니다.
html, css, javascript의 경우 은연중에 많이 들어본 단어일 수 있습니다. 반면, 서버 프로그그래밍 언어와 웹서버 언어는 생소할 수 있습니다.
위에서 언급한 코딩 언어들을 분류하면 다음과 같습니다.
- 보여지는 부분 : html, css, javascript
- 뒤에서 데이터를 처리하는 부분 : php, python 기타 등등
- 이용자와 연결해주는 부분 : 웹서버(apache, nginx 등)
- 데이터를 저장하는 부분 : DB(mysql, mariadb, mongodb, sqlite3 등)
간략하게 분류를 나눠 살펴봐도 익숙하지 않은 사람들에게는 머리 아픈 일이 될 수 있습니다.
개인적으로 상품 브랜드에 문외한입니다. 패션 트랜드에 관심이 많은 사람들은 브랜드만으로 상품의 종류를 이야기하곤 합니다. 이와 비슷합니다.
익숙하지 않은 사람들에게는 그 세계에서 당연한 것이 쉽지 않은 일이 될 수 있습니다. 한가지 더 예를 들면, 차량 브랜드와도 비슷합니다.
앞에서도 언급했지만 불가능한 일은 아닙니다. 따라서, 순서를 정해 조금씩 익숙해져 간다면 누구나 충분히 원하는 사이트를 만들 수 있습니다.
✔ 홈페이지 사이트를 만드는 순서
처음으로 어떤 일을 하게 되면, 당연히 그 일을 잘하기 위한 절차 및 규칙을 알아야 합니다. 하지 말아야 하는 일은 피하고, 해야 하는 일은 반드시 하는 과정에서 원하는 결과에 도달할 수 있습니다.
홈페이지를 만드는 과정 또한 같습니다. 필요한 부분을 익히고, 활용해서 원하는 모습과 기능을 만들어 가면 됩니다.
어쩌면, 이 과정은 블럭 쌓기와 닮아 있기도 합니다. 필요한 블럭을 찾아 필요한 곳에 쌓는 과정에서 우리는 원하는 결과를 얻을 수 있습니다. 다만, 코딩은 조금 더 익숙하지 않을 뿐입니다.
1️⃣ 첫 번째, html과 css를 익힌다.
사실, 가장 먼저 해야 할 일은 홈페이지를 구상하는 계획을 세우는 것입니다. 프로젝트의 목적이 없다면, 찾아가는 것이 쉽지 않습니다.
하지만, 이제 시작하는 단계는 학습과 함께 진행해야 합니다. 따라서, 다양한 기능에 대해서 살펴보고, 규칙을 익히는 과정을 무시할 수 없습니다.
타인에게 보여지는 부분을 책임질 수 있는 것이 html, css, javascript 입니다. 따라서, 이 부분에 대한 학습과 구성이 이루어지는 것을 첫번째 목표로 잡는 것이 좋습니다.
결과물을 시작적으로 확인할 수 있다는 것은 그만큼 만족감이 높아질 수 있는 부분입니다. 이 만족감은 결국, 학습 또는 프로젝트를 진행할 수 있는 힘으로 작용할 것입니다.
더불어, html과 css는 접근성이 좋습니다. 특별한 에디터가 필요한 것이 아니며, 단순한 규칙들을 메모장을 통해서도 작성하고, 거의 실시간으로 결과물을 확인할 수 있습니다.
블럭이 쌓여가는 모습을 눈으로 확인하며, 원하는 결과에 도달하기 위해 노력하는 것과 비슷합니다.
물론, 필요한 에디터를 사용하면 기억나지 않는 명령어에 대한 자동완성 기능의 도움과 빠르게 문법의 오류를 찾아 낼 수 있습니다.
2️⃣ 두번째로 서버 프로그래밍 언어에 대해 학습합니다.
우리가 원하는 홈페이지 외관(디자인)을 적절하게 구성했다면, 이제는 사용자들의 요청에 따라 해당 페이지를 보여주고, 데이터를 처리하는 기능을 만들어 주어야 합니다.
이 부분은 선택사항이며 꼭 필요한 것은 아닙니다. 위에서 언급한 1️⃣번의 작업으로도 충분히 멋진 홈페이지를 구성할 수 있습니다.
따라서, 여러 데이터를 처리하거나 많은 페이지를 만들어야하는 경우가 아니라면 패스해도 무관 합니다.
예를 들어, SNS와 같이 동일한 페이지 레이아웃에 서로 다른 데이터를 보여줘야 한다면, 그 기능을 만들어야 합니다.
모든 페이지를 필요할 때마다 수작업으로 만들 수는 없는 일이기 때문이죠. 요청한 데이터를 일정한 양식으로 보여주기만 한다면, 데이터를 처리하고 템플릿에 데이터를 표시할 수만 있으면 됩니다.
해당 기능을 프로그램이 대신할 수 있습니다. PHP, Python등의 언어를 이용하는 방법이 있습니다.
3️⃣ 마지막으로 웹서버와 페이지들을 연결할 수 있어야 합니다.
비교적 간단하게 설정만으로 끝날 수 있습니다. 인터넷 상에서 클라이언트(사용자)가 우리의 홈페이지에 방문했다면 웹페이지를 보여줘야 합니다.
사용자의 호출에 따라 구성된 페이지를 보여줘하는 부분입니다.예를 들어, 어떤 회사의 문의 센터를 방문했다고 생각해 봅시다.
기본 데스크에서 어떤 일로 왔는지, 무엇이 문제인지 등등의 정보를 묻습니다. 그리고 원하는 부서 혹은 해결할 수 있는 담당자와 연결을 진행해 줍니다.
사용자의 컴퓨터에서 ip주소 혹은 도메인(domain)주소를 통해 우리의 웹서버에 신호를 보냅니다. 그리고 그 신호에 맞춰 설정되어진 페이지와 연결시켜 주게 됩니다.
이 부분을 24시간 담당하고 있는 것이 웹서버이며, 이를 설정해주는 것이 홈페이지를 배포해준다는 표현과 같습니다.
위에서 언급한 내용은 아주 간략하게 자체적으로 홈페이지를 제작하는 과정을 다뤘습니다. 저 또한 전문가라고 할 수는 없습니다.
다만, 학습하는 과정에서 어려움을 겪었던 핵심을 테마로 삼은 포스팅입니다. 순서와 필요성을 모른다면, 우리는 원하는 결과를 얻기까지 많은 시간을 소비하게 될 수 있습니다.
여기서 한 가지를 더 보태면, 순서와 필요성, 그리고 ‘키워드’입니다. 문제를 해결하기 위해 필요한 기능을 포괄할 수 있는 핵심 키워드를 안다면 원하는 내용을 빠르게 찾을 수 있습니다.