Server-side Programming Overview

Kim Jin Seong·2022년 3월 30일
1

Django

목록 보기
6/10
post-thumbnail

본 포스팅은 Back-end 개발 입문과 홈페이지 제작 기술 기반 마련을 위한 공부자료입니다.
Django 공식 문서와 MDN web docs를 참고자료로 작성됐습니다.

https://www.djangoproject.com/
https://developer.mozilla.org/ko/docs/Learn/Server-side/Django


목표

  • 서버사이드 프로그래밍에 대한 이해
  • 클라이언트 프로그래밍과의 차이점 이해

개요

  • 대부분의 큰 사이트는 동적으로 보여주기 위한 다양한 데이터가 필요할 때 서버사이드 코드를 사용한다.
  • 일반적으로 서버에 있는 데이터베이스에 저장된 데이터를 빼내 일부 코드를 통해 보일 수 있도록 가공한 뒤 클라이언트에게 송신한다.
  • 서버사이드 코드와 동적 사이트의 장점
    • 개별 사용자를 위한 맞춤 웹사이트 컨텐츠 제공
    • 사용자 선호도 및 활동에 따라 관련성이 높은 컨텐츠를 강조 가능

Sever-side Web Programming

  • 정의
    • 웹 서버는 클라이언트의 요청이 오길 기다리고, 요청이 도착하면 작업을 진행하여, 웹 브라우저에 HTTP 응답 메시지를 보낸다.
    • 동적 웹 사이트는 필요할 때, 동적으로 응답 컨텐츠를 생성하는데, 동적 웹 사이트를 지원하는 코드는 서버에서 실행되어야 한다.
    • 이런 지원 코드를 만드는 것을 “Server-sice Programming”이라고 한다.
  • 웹서버와 브라우저
    • HTTP를 이용해 통신
    • 사용자가 웹 페이지에서 HTTP Request( 검색, 링크 클릭 등 )를 목적 서버에 전달.
      • 리소스 식별 URL 포함
      • 필요한 작업을 정의하는 메서드 포함
      • 추가로 URL 매개변수, POST 데이터, Cookies( 이용정보 )를 이용해 인코딩된 추가 정보를 포함할 수 있다.

정적 웹 사이트( Static Sites )

  • 정적 사이트는 특별한 리소스 요청이 들어올 때 서버에서 하드 코딩된 동일한 컨텐츠를 반환한다.
  • 브라우저가 지정된 URL에 HTTP “GET” 요청을 보낼 때
    • 서버는 파일 시스템에서 요청한 문서를 검색한다.
    • 문서가 있다면 문서와 Success Status를 포함한 HTTP 응답을 반환한다.
    • 문서가 없다면 Error Status HTTP 응답을 반환한다.

동적 웹 사이트( Dynamic Sites )

  • 동적 사이트는 필요할 때 동적으로 응답 컨텐츠가 생성된다.
  • 사용자 또는 저장된 환경을 기반으로 URL에 대해 다른 데이터를 반환할 수 있으며, 응답을 반환하는 과정에서 다른 작업을 수행할 수 있다.
  • 동적 웹 사이트를 지원하는 코드는 서버에서 시행되어야 하고, 이런 코드를 만드는 것을 “Server-side Programming”이라고 한다.( or Back-end Scripting )
  • 정적 웹 사이트와 같이 브라우저는 HTTP 요청을 서버에 보내고, 서버는 요청을 처리해 적절한 HTTP 응답을 반환하게 되지만, 추가적인 작업을 거치게 된다.
    • 일단 요청dl Server-side 코드에 전달되어 서버는 응답을 해석해 필요한 정보를 데이터 베이스에서 읽는다.
    • 탐색한 데이터와 HTML 템플릿을 결합한다.
    • 마지막으로 생성된 HTML을 포함한 응답을 사용자 즉, 클라이언트에게 보낸다.

Server-side와 Client-side

  • 서로 다른 목적을 가진다.
  • 일반적으로 같은 프로그래밍 언어를 쓰지 않는다.( JavaScript 예외 )
  • 서로 다른 운영체제 환경에서 수행된다.
  • 개발자는 일반적으로 Web Frameworks를 이용해 코드를 작성한다.
    • 일반적인 문제 해결과 개발 속도에 이점을 가짐
    • 특정 도메인에서 나타나는 다양한 유형의 작업을 단순화하도록 설계된 함수, 객체, 규칙 및 기타 코드 구성요소의 모음을 말한다.
    • 서버와 클라이언트 둘 다 프레임워크를 사용하지만 도메인이 크게 다르므로 서로 다른 종류의 프레임워크를 사용한다.

Client-side Code

  • 브라우저에서 실행되는 코드를 말함
  • 주요 목표
    • 렌더링된 웹 페이지의 모양과 행동을 개선시키는 것
    • UI 구성 요소 선택 및 스타일지정
    • 레이아웃 제작, 탐색, 양식 유효성 검사 등 포함
  • 코드
    • HTML, CSS, JavaScript
    • 웹 브라우저 안에서 실행
    • 기본 운영체제와 연결되지 않거나 아주 약간 연결됨
    • 모든 브라우저에 맞춤 서비스를 제공하기 어려움
  • 프레임워크
    • 레이아웃 및 프리젠테이션 작업을 단순화 하는 프레임워크 사용

Server-side Code

  • Client-side Code와 대조적으로, 대부분 브라우저의 요청에 대한 응답으로 어떤 컨텐츠를 반환할지 선택
  • 주요 목표
    • 제출된 데이터 및 요청의 유효성 검사
    • 데이터 저장 및 검색을 위한 데이터 베이스 사용
    • 필요에 따라 올바른 데이터 전송과 같은 작업 처리
  • 코드
    • 다양한 프로그래밍 언어로 작성 가능
    • PHP, Python, Ruby, C# 등
    • 서버의 운영체제와 모든 접속 권한을 가짐
    • 개발자가 원하는 프로그래밍 언어( + 특정 버전 )를 사용 가능
  • 프레임워크
    • 직접 구현해야 하는 많은 “공통” 웹서버 기능을 제공하는 프레임워크 사용
    • 세션지원, 사용자 및 인증 지원, 데이터베이스 연결 지원 등

Server-side Programming이 할 수 있는 것

  • 개별 사용자에 맞게 정보를 효율적으로 전달하거나 사용자 경험을 훨씬 향상시킴
  • 효울적인 저장소와 정보 전달
    • 정보를 데이터베이스에 저장하고 HTML 및 기타 파일( PDF, 이미지 등 )을 동적으로 생성하고 반환할 수 있습니다.
    • 적절한 클라이언트 웹 프레임워크로 렌더링하기 위해 간단한 데이터( JSON, XML 등 )도 반환할 수 있다.
      • 서버의 처리 부담과 전송 데이터양 감소
    • 소프트웨어 도구의 결과 또는 통신 서비스의 데이터를 반환할 수도 있다.
  • User Experience( 맞춤형 사용자 경험 )
    • 사용자에게 편안함과 맞춤형 사용자 경험을 제공하기 위해 사용자의 정보를 사용하거나 저장할 수 있다. e.g. 신용카드 정보, Google Maps - 라우팅정보, 현재 위치 등
    • 사용자의 습관에 대한 분석은 사용자의 흥미에 대해 예측하거나 사용자 맞춤 응답과 알림을 주는데 사용될 수 있다.
  • 컨텐츠에 대한 접근 제한
    • Sever-side 프로그래밍을 통해 사용자만 접근할 수 있도록 제한하거나 사용자가 볼 수 있는 정보만 제공할 수 있다.
  • 세션과 상태 저장
    • 개발자는 서버프로그래밍을 사용해 Sessions을 만들 수 있다.
      - 서버가 현재 사이트의 사용자 정보를 저장하거나 정보에 기반한 다른 응답을 보낼 수 있는 기본적인 메커니즘

      e.g. 사용자가 이전에 이용한 주문 내역에 대한 링크를 표시, 게임의 Save & Load

  • 알림과 대화
    • 서버는 웹사이트 자신이나 이메일, SMS 또는 다른 통신 서비스 등을 이용해 일반적 또는 유저에 특화된 알림을 보낼 수 있다.

      e.g. Facebook, Twitter - 새로운 연락에 대한 알림을 이메일 또는 SMS로 전송, 서버의 메모리 부족 또는 의심스러운 활동을 하는 사용자에 대한 경고 메시지 전송

  • 정보 분석
    • 사용자의 행동( 검색, 구매, 추천, 머무르는 시간 등 )에 대한 정보를 수집할 수 있다.
    • Sever-side 프로그래밍을 사용해 데이터의 분석을 기반으로 응답을 생성한다.

결론

  • Server-side 코드는 웹 서버 위에서 실행되고 주 역할은 사용자에게 전달하는 정보를 제어하는 것이다.
    • Client-side 코드는 사용자에게 전달하는 데이터의 구조와 표현을 처리한다.
  • 사용자 별 맞춤 설정된 정보를 효율적으로 제공하고 좋은 아이디어가 있는 웹 사이트를 만들때 유용하다.
  • Server-side 코드는 여러 프로그래밍 언어( Python, Java 등 )로 작성될 수 있으며 보다 간편한 구현을 위해 웹 프레임워크를 사용해야 한다.

Reference

https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_software_do_I_need

profile
Data Study

0개의 댓글