# 웹 프로그래밍
## 목차
1. 컴공과의 흔한 고민
2. 서버와 클라이언트
3. 프론트 엔드와 백 엔드
## 컴공과의 흔한 고민
컴퓨터공학 4학년이 되면 다들 이런 고민을 한다.(~~카더라~~)
'그래서 나는 정작 무엇을 만들 수 있지?'
다양한 분야의 개발이 존재하겠지만, 필자는 보통 웹 개발을 추천한다. 일상 생활에서 매일 접하는 분야임과 동시에 수요 또한 많기 때문이다. 그럼 지금부터 웹 개발에 대해 하나씩 공부해보자.
## 서버와 클라이언트
물리적으로 웹 서비스는 서버와 클라이언트로 구성되며, 요청과 응답의 매커니즘으로 동작한다.
서버는 서비스를 제공하고, 클라이언트는 이를 활용한다. 마치 음식점에서 음식을 제공하고 손님은 이를 구매하는 것처럼 말이다.
웹 브라우저를 통한 페이지 접근을 예로 요청과 응답을 설명해보자. 웹 브라우저에 URL을 입력하면 해당 사이트가 나타난다. 여기서 URL 입력이 클라이언트의 요청이 된다. 그에 대한 서버의 응답은 해당 사이트의 화면이다.
![Imgur](https://i.imgur.com/spWCXLi.png)
## 프론트 엔드와 백 엔드
논리적으로 웹서비스는 프론트 엔드와 백 엔드로 구분된다.
프론트 엔드(front-end) 개발은 실제로 눈에 보이는 영역을 다룬다. 이와 반대로 백 엔드(back-end) 개발은 보여지지 않는 것들을 처리한다. 프론트엔드 개발은 클라이언트 개발에 가깝고, 백엔드 개발은 서버 개발에 가까운 특징이 있다.
![Imgur](https://i.imgur.com/rZHvuN4.png)
프론트 엔드 개발에 사용되는 언어는 HTML, CSS, JS가 있다. HTML은 문서의 내용을 구성하고, CSS는 문서의 디자인을 꾸민다. JS는 문서에 생동감을 부여한다.
백엔드 개발에 사용되는 언어는 여러가지가 있는데, 우리는 Java, JSP를 선택하여 공부할 예정이다. Java는 생략한다. JSP는 HTML문서에 자바의 문법을 삽입할 수 있게 해준다.
백엔드의 한 분야로 데이터베이스가 존재하는데, 여기서는 SQL이라는 언어 또한 사용한다.
![Imgur](https://i.imgur.com/EKDAVvR.png)
결론적으로 위의 6가지의 언어를 익히면 웹 서비스를 만들 수 있다.
## 요약
1. 웹 서비스는 클라이언트와 서버의 요청과 응답으로 동작한다.
2. 웹 개발은 프론트엔드개발과 백엔드 개발로 나뉜다.
3. 프론트엔드 언어로는 HTML/CSS/JS, 백엔드 언어로는 Java/JSP/SQL 등이 있다.