brunch

You can make anything
by writing

C.S.Lewis

by 유민영 Sep 07. 2019

개자이너 혹은 디발자를 위한 웹 테크트리 소개 - 하편

혼자 다 해 먹고 싶은 욕심쟁이 웹 디자이너들을 위한 작은 길잡이 #2

상편 URL : https://brunch.co.kr/@artfrige/5


지난 상편에서는 프론트엔드 개발을 시작하는 순서를 알아보았다. 이제 독자께서 HTML, CSS, Javascript 를 이용해서 웹 사이트의 모양새(껍데기)를 자유자재로 만들어 낼 수 있다는 가정 하에 다음 단계로 넘어간다면 어떻게 해야 할지를 알아보자.


0. 면책사항 고지

이 게시물은 백엔드 프로그래밍에 입문하고자 하는 디자인 전공자를 위한 안내서이며, 이공계 전공의 전문 프로그래머 지망생을 위한 글이 아님을 알린다. 본 게시물에 언급하는 모든 소프트웨어와 그의 장단점 및 의견은 필자 개인의 의견임을 밝힌다.




1. 내가 처음 학습할 서버의 환경을 선택하기

서버에 대해 먼저 설명하자면, 서버는 "외부에서 요청하는 정보를 저장하거나 출력해줄 준비가 된 채로 어딘가에 계속 켜져 있어야 할 컴퓨터"이다. 서버도 컴퓨터이니 만큼 여러 가지 소프트웨어 옵션이 있다.


우선 OS를 선택해야 한다. 서버용 OS를 삼분하는 큰 틀은 형식이다. 여기에는 Unix, Linux, Windows라는 종류가 있다. 이 가운데 Unix와 Linux는 POSIX(포직스:Portable Opeation System Interface)라는 표준 규격을 따르기 때문에 사용방법이 어느 정도 비슷하다. 이 분류의 OS에는 데비안, 우분투, CentOS, 레드햇, 페도라 등(이상 Linux), BSD, Darwin 등(이상 Unix)이 있다.


개인 학습용이나 규모 프로젝트에는 Linux가 널리 사용되며 글쓴이는 이 중에서도 우분투의 LTS(Long Term Support) 버전이나 CentOS를 설치해 사용하기를 추천한다. 이 두 가지가 서버용으로 인기가 높은 축에 속하기 때문에 문제가 생겼을 때 구글링으로 해결하기 쉽다는 장점이 있기 때문이다. 또한 무료로 배포되기 때문에 학습용으로 추천할 만하다. Windows Server는 구입을 위해 별도의 비용을 지불해야 하며 가격도 높기 때문에 학습용으로는 크게 추천하지 않는 편이다. 단, 본인이 매킨토시(맥)를 가지고 있다면 Mac OS를 그대로 사용해도 된다. Mac OS도 Unix의 한 갈래이기 때문에 소프트웨어만 설치한다면 서버로 동작하는 데 문제가 없다.


Linux 배포판 혹은 Mac OS를 골랐다고 가정하고, 그다음에는 웹 서버 소프트웨어를 선택해야 한다. 선택지는 Apache(아파치)와 Nginx(엔진엑스) 그리고 Node.js(노드 제이에스)가 대표적이다. 어떤 것이 좋고 나쁜 것은 없고 각자 특징이 있을 뿐이다. 특별히 Node.js를 학습하는 이유가 없다면 Apache나 Nginx로 입문하는 것을 권한다.


2. 서버사이드 개발 언어 선택

서버사이드 개발 언어는 대표적으로 PHP, Python, Javascript(Node.js), ASP, JSP 등이 있다. 이 중 ASP와 JSP는 유료이니 우선 제쳐 두자.


PHP(PHP Hypertext Preprocessor)는 전통적인 서버 사이드 언어이다. 장점으로는 쉬운 진입 장벽, 낮은 러닝 커브와 압도적으로 빠른 개발 속도를 자랑하기 때문에 입문용으로 추천할 만한 언어이다. 이상하리만치 PHP라는 언어가 무언가 나사 빠진 언어처럼 묘사되곤 하는데 PHP7 버전부터는 많은 단점이 보완되었다.


Python을 선택할 경우 주로 Django(장고)라는 웹 프레임워크를 사용하여 개발하게 된다. Python을 선택해 학습할 경우 웹뿐만 아니라 다른 여러 과학 분야에서 응용할 수 있다.


Javascript는 Node.js로 개발하게 된다. Express.js라는 프레임워크와 묶는 경우가 많다. 자바스크립트는 잘 익혀 두면 상편에서 말한 프론트엔드 개발에도 응용할 수 있다. 반대로 프론트엔드 개발을 학습하며 익힌 자바스크립트의 기초를 여기에 써먹을 수도 있다.


이 중 글쓴이가 초심자들에게 추천할 만한 언어는 PHP이다. 물론 Python이나 Javascript로 시작할 수도 있겠지만 백엔드 개발의 기초를 익히는 데는 러닝 커브가 완만한 PHP가 좋을 것이다.


3. 데이터베이스 소프트웨어 선택

데이터베이스는 정보화 시대의 꽃이다. 여러분이 웹 상에서 주고받는 모든 정보는 데이터베이스를 통한다고 해도 과언이 아니다. 데이터베이스는 관계형 데이터베이스(RDBMS: Relational Database Management System)와 NoSQL(Not Only SQL)이라는 두 가지 형식이 널리 사용된다.


관계형 데이터베이스는 쉽게 생각해 엑셀을 떠올리면 된다. 각 필드에 인덱스 번호, 항목명, 항목에 들어갈 값의 종류 등을 정의하고 그에 맞는 데이터를 저장하는 것이다. 그리고 이 값들을 저장하거나 불러오거나 수정하거나 원하는 값이 포함된 행을 검색하는 데 SQL(Structured Query Language: 구조화된 질의어)라는 형식을 사용하며 아래와 같이 표현한다.


"SELECT title, date FROM mydata WHERE index = 10"


위 SQL문은 아래와 같은 뜻이 조합된 구문이다.


SELECT title, date - title과 date라는 값을 선택해 가져온다

FROM mydata - mydata라는 테이블로부터

WHERE index = 10 - index라는 값이 10인 행에 한해서


따라서 위 구문은 "mydata 테이블에서 index 값이 10인 행의 title과 date 셀의 값을 가져오시오"라는 SQL문이 되므로 데이터베이스 소프트웨어는 해당하는 값을 찾아 사용자에게 알려주게 된다.


NoSQL은 이름에서 짐작하듯 RDBMS와는 다르게 SQL문을 사용하지 않는다. 이 글은 DBMS를 설명하고자 하는 글이 아니므로 길게 설명은 하지 않겠지만 RDBMS와 NoSQL은 상호 보완적이며 어느 하나가 다른 것을 완전히 대체할 수는 없다.


글쓴이는 RDBMS를 먼저 학습해 볼 것을 권하며 오픈소스이고 무료로 이용할 수 있는 상용 퀄리티 소프트웨어인 MariaDB를 배워보는 것을 추천한다. RDBMS로 기초를 쌓고 난 이후 더 흥미가 생긴다면 NoSQL도 학습해 보자.


4. 개발 목표 설정

개발환경을 설정했으면 이제 무엇을 만들지 정해야 한다. 물론 페이스북이나 인스타그램 같은 서비스를 만들고 싶겠지만 천리길도 한 걸음부터 가야 한다. 우선 처음에는 간단한 계산기를 만들어 보고 이것을 데이터베이스에 저장하는 법을 배워보자. 이런 식으로 프로그래밍 언어와 SQL 언어를 한 번에 학습하는 것이 좋다. 두 가지는 웹 서비스에서 따로 떼 놓고 생각할 수 없기 때문이다. 따라서 자신이 학습할 교재를 선택할 때 목차나 내용을 보고 두 가지를 함께 설명한 입문서를 고르는 편이 공부하기에 좋을 것이다.


그리고 초보 딱지를 떼는 마지막 단계는 게시판이나 블로그와 같이 다양한 데이터를 입력받고 저장한 후 출력하는 소프트웨어를 만들어보는 것이다. 게시판과 블로그를 능숙하게 만들 수 있게 되었다면 어느 정도 프로그래밍의 요령과 데이터를 입출력하는 방법을 알게 되었을 것이다. 여기까지 왔으면 여러분은 디자인, 프론트엔드, 백엔드 개발까지 혼자 다 해 먹을 수 있는 특급전사가 되었다.


이제 능력을 발휘하여 마음껏 다양한 웹 서비스를 만들어보도록 하자.

작가의 이전글 개자이너 혹은 디발자를 위한 웹 테크트리 소개 - 상편
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari