반응형

21세기 Django를 뛰어넘는 Python 진영의 새로운 웹 서버 ❓❓

2018년 5월 어느 여름, 이 시대 최고의 웹 서버 프레임워크로 각광받는 FastAPI가 발표되었다.

그 시절 발표했던 개발자들은 2024년 이렇게 될 줄 알았을까

>> 67.3k의 starred를 자랑하는 FastAPI Github

 

 

초기 FastAPI는?

처음에 Python 진영에서 발표와 동시에 많은 사랑을 받으며 성장해왔다.

최근 트렌드에 맞게 Restful API를 설계할 수 있는 파이썬의 웹 프레임워크라는 정체성을 가졌다.

사람들이 FastAPI를 점점 더 알아가고 찾게되는 이유 중 하나는

매우 잘 정리되어 있는 document page도 인기를 높이는 데 한 몫했다.

>> FastAPI document

 

 

Wiki에서는 FastAPI📱 를 어떻게 정의하고 있을까?

FastAPI란? FastAPI는 Pydantic을 기반으로 하며 type hints를 사용하여 데이터를 검증, 직렬화 및 역직렬화합니다. 또한 이를 사용하여 구축된 API에 대한 OpenAPI 문서를 자동으로 생성합니다. FastAPI는 비동기 프로그래밍을 완벽하게 지원하며 Gunicorn 및 Uvicorn 및 Hypercorn과 같은 ASGI 서버에서 실행될 수 있으므로 프로덕션 환경에 적합한 선택입니다. 개발자 친화성을 높이기 위해 프로젝트 초기부터 편집자 지원이 고려되었습니다.

 

 

1. Pydantic

 

  • 웹 서버의 parameter로 주고받는 data를 검증할 수 있게 해주는 파이썬 라이브러리이다.
  • 객체 및 annotation을 활용하여 data validation check를 손쉽게 할 수 있도록 도와준다.

2. type hints

 

  • Python의 언어 특성상 변수를 초기화할 때 데이터 타입을 명시하지 않는다. 타입이 명확하지 않은 이런 상황은 많은 오류 가능성을 내포하게 된다. 이를 예방하기 위해 개발자들은 Python에 Data type를 명시하기 시작했고, 여기서 사용되는 것은 type hint이다.
  • 실제로 타입이 다르다고 해서 오류를 발생시키지는 않지만, type hint를 통하여 오류 가능성을 사전에 예방할 수 있다.
현업 개발자들 사이에서 type hint는 찬/반 의견이 있다?
찬성: type 을 명시함으로써 잘못된 data type에서 유발되는 오류 가능성을 사전 예방할 수 있는 장점이 있다.
반대: 일부 여론에서는 python의 탄생 목적과 다르게 그 확장성을 한정하는 것이라는 의견도 있다.

 

3. Open API(= Swagger)

 

  • 흔히 우리가 말하는 swagger가 대표적인 Open API 문서이다.
  • 웹 서버에서 제공되는 API의 종류를 하나의 페이지에서 대시보드 형태로 파악할 수 있다.
  • Input / Output / Validation / Example / Test 등 다양한 기능을 웹 UI 상에서 확인 가능하다.

+ 아래와 같은 화면, Swagger!

 

4. 비동기 프로그래밍

 

  • 서버에 들어온 request를 처리할 때, request 처리에 대한 응답을 일일히 기다리지 않는다.
  • 코루틴(co-routine) 이라는 개념을 사용하여 비동기적 처리를 수행한다.

 



FastAPI를 사용하는 굴지의 기업들 💁🏻

🥇 Netflix

🥈 Uber

🥉 Cisco

  • FastAPI는 Stack Overflow 2021 개발자 설문조사에서 세 번째로 사랑받는 웹 프레임워크에 등재된 바 있다. 🎁

 

+ FastAPI에서 hello world! 찍는 방법 🌟

우선 Python이 설치되어 있어야 하고, Python을 실행하여 아래 코드를 작성 후 실행해주자. 👬👬

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return "Hello World!"

 


맺는말

한땀 한땀 코드를 짜야 했던 과거에 비해서 요즘에는 점점 강력한 프레임워크들이 등장하고 있다.
그 말은 즉, 원한다면 누구든지 빠르게 서비스를 만들 수 있다는 것이다.
앞으로 코드는 점점 더 간결해지지 않을까 싶다. 😆

 

 

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다.

 

요즘에 장고를 공부하면서 개발을 하고 있습니다.

 

이때 아래와 같은 상황을 맞을 때 어떻게 해결하는지 기록하려고 합니다.

Error: That port is already in use 

 

상황을 보니

이미 포트가 열려있어 새로 열 수 없는 상황입니다.

 

아래의 명령어로 port 8000와 관련된 프로세스를 모두 죽이고 다시 시작하면 됩니다.

 

sudo lsof -t -i tcp:8000 | xargs kill -9

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다~~!!ㅎㅎ

 

오늘은 클라우드 서비스에서 실행중인 인스턴스(AWS 기준)에 외부에서 접근하도록 하는 방법에 대해서 기록을 해보려고 합니다.

 

1. 먼저 외부 인스턴스에 보안그룹이 있습니다.

보안그룹에서 인바운드 규칙을 아래와 같이 수정해주세요!

 

 

저는 TCP 관련 네트워크를 "모든 TCP" 를 추가해주었습니다.

기존에 생성되어있는 SSH 프로토콜 규칙은 해당 AWS인스턴스에 접근하기 위한 프로토콜입니다

 

 

 

2. 저는 인스턴스에 Django 서버를 열어주었기 때문에

setting.py를 아래와 같이 고쳐줍니다.

 

 

상단에 보시면 ALLOWED_HOSTS에 AWS인스턴스의 *퍼블릭 IP 주소를 추가해줍니다.

ALLOWED_HOSTS는 의미와 같이 허락된 HOSTS로 외부에서 접근가능하게 만들다는 것입니다.

 

 

AWS 인스턴스를 클릭하면 하단에 정보가 나옵니다

이 정보를 입력해주면 됩니다.

 

 

3. 마지막으로 장고 서버를 실행시킬 때 아래와 같은 명령어 옵션을 부여합니다.

 

 

>>python3 manage.py runserver 0.0.0.0:8000

 

0.0.0.0 옵션을 주어 외부의 모든 아이피에서 접근이 가능하도록 만들어 주었습니다.

또한 8000번(장고 기본 포트) 포트를 열어주어 AWS 인스턴스의 ip:8000으로 외부에서 접근이 가능하게 만들어주었습니다.

 

 

4. 모바일이나 다른 외부에서 해당 서버에 접근하였을 때 정상적으로 출력됩니다.

 

 

 

 

이상 긴 글 읽어주셔서 감사합니다~!

모두들 열공하세요~~!!ㅎㅎ

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다~!!

 

오늘은 Web Programming을 진행할 때 간단하게 디버깅하는 방법을 말씀드리려고 합니다.

 

웹 공부를 하면서 가장 마주치기 쉬운 문제는 어떤 변수에 값이 들어왔는지 아닌지 확인하는 경우라고 생각합니다.

 

 

이런 경우에는 간단하게 아래와 같은 java script 코드를 가지고 해결할 수 있습니다.

 

<!DOCTYPE html>
<html>
<body>

<h1>JavaScript console.log() Method</h1>

<p>Press F12 on your keyboard to view the message in the console view.</p>

<script>

console.log("Hello world!"); <!-- 바로 여기입니다 -->

</script>

</body>
</html>

 

윗 부분을 보시면 script라는 태그 안에서 특정 값을 log로 찍어볼 수 있습니다.

 

이런 코드가 있을 때, 아래와 같이 개발하고 있던 페이지를 로딩하고 F12버튼을 누른 뒤,

상단의 Console 이라는 부분을 보면 로그가 찍히는 것을 발견하실 수 있습니다.

제가 만들고 있는 홈페이지 입니다.(Bootstrap 참조)

이런 방법은 간단한 방법이지만, 때로는 강력하게 작용할 수 있으니, 알아두시면 좋다고 생각합니다!

 

 

그럼 모두들 코로나 조심하시고, 건강하시길 바랍니다!

 

반응형
반응형

안녕하세요

알고리즘을 공부하는 개발자 Henry입니다.

 

오늘은 Django를 통해 웹 서버를 띄우고 간단한 화면을 출력해보겠습니다.

 

 

 

우선 저는 Ubuntu에서 진행하기 때문에

별도의 환경과는 다른 점 양해 부탁드립니다.

 

저는 아래 블로그를 참고하여 실습을 진행하였습니다.

velog.io/@maryoh2003/Django%EB%A1%9C-%EC%9B%B9%EC%82%AC%EC%9D%B4%ED%8A%B8-%EB%A7%8C%EB%93%A4%EA%B8%B0-kwk5p8orbd

 

Django로 웹페이지 만들기

python-django-logo.jpg 프로젝트 생성 및 준비 1. 프로젝트 생성 2. 프로젝트 폴더로 이동 3. 하위 프로그램(서브 앱) 생성 4. DB(sqlite3) 파일 생성 5. 관리자 계정 생성 6. 서버 실행 환경 설정 > 프로젝트

velog.io

 

 

1. 프로젝트 생성 및 준비

>> django-admin startproject <ProjectName>

>>  cd <ProjectName> 프로젝트 폴더로 이동

>> python manage.py startapp <AppName> 하위 프로그램(서브 앱) 생성

 

 

2. 프로젝트 이름을 mytestsite라고 하고, 서브 앱 이름을 eating이라고 지었습니다.

먼저 settings.py 파일 안에 있는 INSTALLED_APPS에서 내가 만든 서브 앱 이름을 추가해야 합니다.

 

3. 언어를 한국어로 설정하고 (기본은 영어로 되어 있다) 시간대를 한국으로 맞춥니다.

 

 

 

 

4. 다음은 path를 추가해주는데, <서브앱.urls>를 해주면 된다.

url을 분리해준다고 생각하면 된다. 하지만 서브앱 폴더에는 urls라는 파일이 없기 때문에 만들어줘야 한다.

 

 

5. 서브앱 main에서 urls.py라는 파일을 만들어 admin과 path를 import해주면 된다.

urlpatterns에는 위에 프로젝트 폴더 urlpatterns와 동일한 문법으로 경로들을 추가해 줄 수 있다.

 

 

6. 이제 본격적으로 페이지를 만들어 봅시다~!

 

✅ 먼저 서브앱 main안에 templates라는 폴더를 만들고, 또 그 안에 main(서브앱과 같은 이름의 폴더)이라는 폴더를 만든다.
✅ 그 안에 원하는 이름의 파일을 만들고 코드를 작성하면 된다.

 

 

 

아래는 index.html 테스트 코드이다.

 

 

 

7. 서브앱 폴더 안에 있는 url.py에서 만든 파일(index)의 경로를 설정해준다.

views.py를 꼭 import 해줘야 한다

 

 

8. views에서는 함수를 작성해주는데, return 함수는 꼭 작성해줘야 한다. 그래야 파일 실행이 가능하다.

 

 

 

9. 서버 실행 함수인 python manage.py runserver를 하면 이렇게 만든 페이지가 뜨는 것을 볼 수 있다.

 

 

 

10. 기본적인 페이지 띄우는 부분 성공이다!

반응형
반응형

안녕하세요~!

 

알고리즘을 공부하는 Henry입니다~

 

오늘은 제가 Django를 공부해보았습니다.

 

이전에는 Flask를 가지고 python 웹 서버를 만들었던 경험이 있는데요

 

이번에는 Django를 한번 다루어보고 싶어 도전하게 되었습니다.

 

 

프로젝트의 이름은 "오늘 뭐 먹지?" 입니다.

 

직장에 다니면서 뭘 먹을지 고민하다가 

먹은 내용들을 웹사이트에 기록해놓으면 좋겠다 싶어서 

주말이 되어 한번 만들어 보려고 합니다.

 

 

 

1. 우선 Django를 설치하기 위해서 AWS에서 Ubuntu 인스턴스를 빌렸습니다.

각자 개발용 윈도우 혹은 Mac을 사용해서 따라해 보셔도 좋을 것 같습니다.

참조:developer.mozilla.org/ko/docs/Learn/Server-side/Django/development_environment

 

Django 개발 환경 세팅하기 - Web 개발 학습하기 | MDN

Django 개발 환경 세팅하기 Jump to sectionJump to section 이제 장고가 무엇인지 알았으니, 윈도우, 리눅스(우분투), 맥 OS X에서 어떻게 장고 개발환경을 세팅하는지, 설치 후에는 어떻게 테스트하는지 

developer.mozilla.org

 

 

2. Ubuntu에 python3를 설치합니다.

장고가 Python 기반 프로젝트이기 때문에 파이썬이 설치되어 있어야 합니다.

>> python3 -V 라고 쳐서 아무것도 안 나오면, 설치하셔야 합니다.

 

>> sudo apt install python3-pip 로 설치해주세요~

 

3. 가상 환경 소프트웨어를 설치해야 합니다.

>> sudo pip3 install virtualenvwrapper

 

 

4. 각자 PC에 환경설정을 담당하는 숨김 파일 (Ubuntu 같은 경우는) bashrc에 들어가서 아래의 내용은 기입합니다.

export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS=' -p /usr/bin/python3 '
export PROJECT_HOME=$HOME/Devel
source /usr/local/bin/virtualenvwrapper.sh

 

 

5. 아래 내용을 입력하여 스타트업 파일을 실행시킵니다.

>> source ~/.bashrc

 

그러면 아래와 같이 뜹니다

virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/premkproject
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/postmkproject
...
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/preactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/postactivate
virtualenvwrapper.user_scripts creating /home/ubuntu/.virtualenvs/get_env_details

 

 

6. 이제 장고를 설치해봅니다.

>> pip3 install django

 

 

7. 설치한 것을 확인해봅시다 (mytestsite라는 폴더를 만들었습니다.)

>> mkdir django_test cd django_test

 

>> django-admin startproject mytestsite

>> cd mytestsite

 

8. 이 폴더 내에서 runserver 명령어와 manage.py 파일을 통해 개발용 웹 서버를 띄울 수 있습니다.

>> python3 manage.py runserver

Performing system checks...

System check identified no issues (0 silenced).

You have 15 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

October 26, 2018 - 07:06:30
Django version 2.1.2, using settings 'mytestsite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

 

 

9. 아래와 같이 뜨면 성공입니다!

(웹 브라우저를 띄워서 http://localhost:8000으로 들어가면 됩니다.)

 

 

10. 지금까지 컴퓨터에 파이썬과 Django를 설치하면 기본적인 웹 화면을 띄워보았습니다.

 

반응형

+ Recent posts