팀장님과 미팅을 하면서 이런 저런 이야기를 했는데,
"WAS 아세요?" 하셔서 으엇..어... 😅
"웹 서버 아세요?"에도 으엇... 😬
순간 어떻게 취업했지 반성했습니다...🤔
무튼,
어디선가 들어는 봤고, 어떻게 저떻게 쓰고는 있는 서비스를 개념과 좀 연결 짓고자 이번 포스트를 준비했습니다. 여러 포스트를 참고하여 쓰는 만큼, 관련 소스가 많을 듯 해서 맨 아래에 정리해두도록 하겠습니다.
먼저 정적 및 동적 웹 페이지를 살펴 본 뒤 웹 서버와 웹 애플리케이션 서버에 대해 알아보겠습니다.
오늘 다룰 개념들은
Client-side code
HTML, CSS, Javascript로 작성 되며, 웹 브라우저 내에서 작동할 뿐 OS에는 거의 영향을 끼치지 못한다.(파일 시스템에 접근하는 것조차 한정적이다.)
유저 별로 다른 화면을 보도록 컨트롤할 수 없고, client-side code에서는 브라우저별로 호환성이 천차만별이다.
server-side programming / back-end scripting
동적 웹 사이트를 지원하는 대부분의 코드는 서버 위에서 동작한다. 이를 위한 코드 작성을 server-side programming 또는 back-end scripting이라고 부른다.
Server-side code는 PHP, Python, Ruby, C#, JavaScript(NodeJS) 등 매우 다양한 언어로 쓸 수 있다. 서버의 시스템에 접근하기 용이하며, 개발자가 원하는 언어를 선택할 수도 있다.
장점으로는
1. 정보의 저장이나 전달이 효율적이고
2. UX를 커스텀하기 편하고
3. 콘텐츠 접근을 통제할 수 있으며
4. 세션이나 상태 정보를 저장할 수 있고
5. 알림이나 대화를 하기에 적합하고
6. 데이터 분석에도 용이하다.
정적 웹 페이지 | vs | 동적 웹 페이지 |
---|---|---|
HTML, JS, CSS, 이미지 ... | AJAX, ASP, ... | |
적혀 있는 코드 그대로 응답 | 동작 방식 | 데이터베이스를 먼저 읽고 그에 따라 응답 |
빠름 | 렌더링 시간 | 비교적 느림 |
웹 브라우저와 서버의 소통 방식
웹 브라우저는 HTTPHyperText Transfer Protocol를 통해 웹 서버와 통신한다. 어떤 웹 페이지의 버튼을 클릭하거나 양식을 제출하거나 검색을 하면, 웹 브라우저가 목표 서버로 HTTP 요청을 보내는 식이다.
요청은 필요한 리소스를 알아볼 수 있도록 URL를 포함하고 있고, 필요한 action의 방식(method) 역시 명시하고 있다. URL 파라미터같은 추가적인 정보도 포함하고 있을 수 있고 말이다.
무튼, 웹서버는 클라이언트의 요청을 기다리고 있다가 요청이 도착하면 HTTP 응답 메시지와 함께 답을 보낸다.
성공적인 응답일 경우 body에 요청했던 리소스가 담겨 있을 것이고, 이는 웹 브라우저에 띄워질 것이다.
server-side (application) code
주로 비즈니스 로직이라고도 불림
Web Server | Application Server |
---|---|
정적 콘텐츠에 적합 | 동적 콘텐츠에 적합 |
리소스를 적게 쓰고, 적게 활용함 | 더 많은 리소스를 쓰고 활용함 |
웹 애플리케이션 구동 환경을 마련함 | 애플리케이션 자체를 위한 구동 환경을 마련함 |
멀티 스레딩 지원 됨 | 멀티 스레딩 불가능 |
HTML, HTTP 프로토콜 사용 | HTTP, RPC/RMI 프로토콜 사용 |
References
All Image or Original Writings Right Reserved by
Difference between Static and Dynamic Web Pages
Static vs Dynamic Websites: What’s the Difference?
[Web] Web Server와 WAS의 차이와 웹 서비스 구조
Introduction to the server side