Intro & Design Pattern

이남경·2024년 3월 12일
0

SSAFY 11기

목록 보기
39/67

Web Application


Web application (web service) 개발

인터넷을 통해 사용자에게 제공되는 소프트웨어 프로그램을 구축하는 과정

다양한 디바이스 (모바일, 태블릿, PC등)에서 웹 브라우저를 통해 접근하고 사용할 수 있음

클라이언트와 서버

웹의 동작 방식

우리는 컴퓨터 혹은 모바일 기기로 웹 페이지를 보게 될 때까지 무슨 일이 일어날까?

Client (클라이언트)

서비스를 요청하는 주체 (웹 사용자의 인터넷에 연결된 장치, 웹 브라우저)

Server (서버)

클라이언트의 요청에 응답하는 주체 (웹 페이지, 앱을 저장하는 컴퓨터)

우리가 웹 페이지를 보게 되는 과정

  1. 웹 브라우저(클라이언트)에서 'google.com'을 입력

  2. 브라우저는 인터넷에 연결된 전 세계 어딘 가에 있는 구글 컴퓨터 (서버)에게 'Google 홈페이지.html' 파일을 달라고 요청

  3. 요청을 받은 구글 컴퓨터는 데이터베이스에서 'Google 홈페이지.html'파일을 찾아 응답

  4. 전달받은 'Google 홈페이지.html' 파일을 사람이 볼 수 있도록 웹 브라우저가 해석해주면서 사용자는 구글의 메인 페이지를 보게 됨

Frontend & Backend


웹 개발에서의 Frontend와 Backend

Frontend (프론트엔드)

사용자 인터페이스 (UI)를 구성하고, 사용자가 애플리케이션과 상호작용할 수 있도록 함

  • HTML, CSS, JavaScript, 프론트엔드 프레임워크 등

Backend (백엔드)

서버 측에서 동작하며, 클라이언트의 요청에 대한 처리와 데이터베이스와의 상호작용 등을 담당

  • 서버 언어 (Python, Java 등) 및 백엔드 프레임워크, 데이터베이스, API, 보안 등

Framework


Web Framework

웹 어플리케이션을 빠르게 개발할 수 있도록 도와주는 도구 (개발에 필요한 기본 구조, 규칙, 라이브러리 등을 제공)

Django framework

django

Python 기반의 대표적인 웹 프레임워크

왜 Django를 사용할까?

다양성

  • Python 기반으로 소셜 미디어 및 빅데이터 관리 등 광범위한 서비스 개발에 적합

확장성

  • 대량의 데이터에 대해 빠르고 유연하게 확장할 수 있는 기능을 제공

보안

  • 취약점으로부터 보호하는 보안 기능이 기본적으로 내장되어 있음

커뮤니티 지원

  • 개발자를 위한 지원, 문서 및 업데이트를 제공하는 활성화된 커뮤니티

목표 ▶ Django를 사용해서 서버를 구현할 것

가상 환경

Python 어플리케이션과 그에 따른 패키지들을 격리하여 관리할 수 있는 독립적인 실행 환경

가상 환경이 필요한 시나리오 1

  1. 한 개발자가 2개의 프로젝트 (A와 B)를 진행한다.

  2. 프로젝트 A는 request 패키지 버전 1을 사용해야 한다.

  3. 프로젝트 B는 request 패키지 버전 2를 사용해야 한다.

  4. 하지만 파이썬 환경에서 패키지는 1개의 버전만 존재할 수 있다.

  5. A와 B 프로젝트의 다른 패키지 버전 사용을 위한 독립적인 개발 환경이 필요하다.

가상 환경이 필요한 시나리오 2

  1. 한 개발자가 2개의 프로젝트 (A와 B)를 진행한다.

  2. 프로젝트 A는 water라는 패키지를 사용해야 한다.

  3. 프로젝트 B는 fire라는 패키지를 사용해야 한다.

  4. 하지만 파이썬 환경에서 water패키지와 fire 패키지를 함께 사용하면 충돌이 발생하기 때문에 설치할 수 없다.

  5. A와 B 프로젝트의 패키지 충돌을 피하기 위해 각각 독립적인 개발 환경이 필요하다.

python -m venv 가상환경을 만들겠다는 명령어

의존성 패키지

한 소프트웨어 패키지가 다른 패키지의 기능이나 코드를 사용하기 때문에 그 패키지가 존재해야만 제대로 작동하는 관계

사용하려는 패키지가 설치되지 않았거나, 호환되는 버전이 아니면 오류가 발생하거나 예상치 못한 동작을 보일 수 있음

의존성 패키지 관리의 중요성

개발 환경에서는 각각의 프로젝트가 사용하는 패키지와 그 버전을 명확히 관리하는 것이 중요

▶ 가상 환경 & 의존성 패키지 관리

파이썬 개발자라면 암묵적으로 requirements.txt, venv를 사용함

가상환경은 들어가는 개념이 아닌 ON, OFF의 개념임

Django 프로젝트


가상 환경을 사용하는 이유

의존성 관리

  • 라이브러리 및 패키지를 각 프로젝트마다 독립적으로 사용 가능

팀 프로젝트 협업

  • 모든 팀원들이 동일한 환경과 의존성 위에서 작업하여 버전간 충돌을 방지

LTS (Long-Term Support)

프레임워크나 라이브러리 등의 소프트웨어에서 장기간 지원되는 안정적인 버전을 의미할 때 사용

기업이나 대규모 프로젝트에서는 소프트웨어 업그레이드에 많은 비용과 시간이 필요하기 때문에 안정적이고 장기간 지원되는 버전이 필요

Django Design Pattern

디자인 패턴

소프트웨어 설계에서 발생하는 문제를 해결하기 위한 일반적인 해결책 (공통적인 문제를 해결하는데 쓰이는 형식화 된 관행)

▶ 애플리케이션의 구조는 이렇게 구성하자 라는 관행

MVC 디자인 패턴 (Model, View, Controller)

애플리케이션을 구조화하는 대표적인 패턴 ('데이터' & '사용자 인터페이스' & '비즈니스 로직'을 분리)

▶ 시각적인 요소와 뒤에서 실행하는 로직을 서로 영향 없이, 독립적이고 쉽게 유지 보수 할 수 있는 애플리케이션을 만들기 위해

MTV 디자인 패턴 (Model, Template, View)

Django에서 애플리케이션을 구조화하는 패턴 (기존 MVC 패턴과 동일하나 단순히 명칭을 다르게 정의한 것)

Project & App


Django project

애플리케이션의 집합 (DB 설정, URL 연결, 전체 앱 설정 등을 처리)

Django application

독립적으로 작동하는 기능 단위 모듈 (각자 특정한 기능을 담당하며 다른 앱들과 함께 하나의 프로젝트를 구성)

Ctrl + C : 강제 종료

파일이 firstpjt와 동등한 위치에 생성됨

앞쪽에 등록하는 것을 권장

요청과 응답


0개의 댓글

관련 채용 정보