본문 바로가기
728x90
반응형

Web114

FastAPI 기초(4) - 쿼리 매개변수 쿼리는 URL에서 ? 후에 나오고 &으로 구분되는 키-값 쌍의 집합 경로 매개변수의 일부가 아닌 다른 함수 매개변수를 선언할 때, "쿼리" 매개변수로 자동 해석함 skip: 값 0을 가집니다. limit: 값 10을 가집니다. from fastapi import FastAPI app = FastAPI() fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}] @app.get("/items/") async def read_item(skip: int = 0, limit: int = 10): return fake_items_db[skip : skip + limit] 1. 선택적 매개변수 기본값을 None으로 설정하여 .. 2023. 1. 30.
FastAPI 기초(3) - 경로 매개변수 파이썬 포맷 문자열이 사용하는 동일한 문법으로 매개변수 또는 변수를 경로에 선언할 수 있음 경로 매개변수 item_id 값은 함수의 item_id 인자로 전달됨 from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id): return {"item_id": item_id} 1. 타입이 있는 매개변수 item_id => int로 선언 from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id} 2. 순서 문.. 2023. 1. 30.
FastAPI 기초(2) - Python coding style PEP8 - 파이썬 코딩 스타일 가이드 1) 코드 레이아웃 들여쓰기를 할 때 Tab 대신 공백(Space)을 사용한다. 특히 Python 3는 Tab과 공백을 혼용해서 사용하는 것을 허용하지 않는다. 문법적으로 들여쓰기를 할 때는 4개의 공백을 사용한다. 각 라인은 79자 이하로 한다. 라인이 길어서 다음 라인으로 넘어갈 때는 원래 들여쓰기 자리에서 4개 공백을 더 들여쓴다. 함수나 클래스는 2개의 공백 라인을 추가하여 구분한다. 메서드는 한 개의 공백 라인으로 구분한다. import는 (여러 모듈을 콤마로 연결하지 말고) 한 라인에 하나의 모듈을 import한다. 더보기 No: import os, sys Yes: import os import sys 컬렉션 인덱스나 함수 호출, 함수 파라미터 등에서 불.. 2023. 1. 26.
FastAPI 기초(1) - 기본 개념 FastAPI FastAPI : API에 대한 모든 기능을 제공하는 파이썬 클래스이며, Starlette를 직접 상속하는 클래스로 Starlette의 모든 기능을 사용할 수 있음 Starlette : Python에서 비동기 웹 서비스를 구축하는데, 이상적인 경량 ASGI 프레임워크/툴킷 ASGI(Asynchronous Server Gateway Interface) : 비동기 서버 게이트웨이 인터페이스로 Python 웹 어플리케이션과 웹 서버 간의 공통적인 인터페이스를 기술함. 애플리케이션 당 여러 개의 비동기 이벤트를 허용함 WSGI(Web Server Gateway Interface) 특징 : 함수 - async 사용, HTTP 헤더와 응답 본문을 별도의 두 가지 await send() 명령으로 보냄 .. 2023. 1. 26.
10. 24시간 365일 중단없는 서비스 구축 1. 무중단 배포 서비스를 정지하지 않고 배포하는 방식 AWS에서 블루그린 무중단배포 도커를 이용한 웹서비스 무중단 배포 두 가지 방식과 L4스위치를 이용한 무중단 배포가 있음 L4는 고가의 장비이기 때문에 대형 기업 이외에는 쓸 일이 거의 없고, 엔진엑스를 이용한 무중단 배포를 할 것이며, 웹서버, 리버스, 프록스, 캐싱, 로드밸런싱, 미디어 스트리밍등을 위한 오픈소스 소프트웨어임 아파치가 대세였던 자리를 빼앗은 가장 유명한 웹서버이자 오픈소스 리버스프록시 외부의 요청을 받아 백엔드 서버로 요청을 전달하는 행위 엔진엑스를 이용하는 이유는 가장 저렴하고 쉽기 때문임 EC2 혹은 리눅스 서버에 엔진엑스 1대와 스프링부트 jar 를 2대 사용하는 것 엔진엑스는 80(http), 443(http) 포트를 할당.. 2022. 3. 15.
9. Travis CI 배포 자동화 24시간 무중단 배포 CI & CD CI(Continuous Integration) : 코드 버전 관리하는 VCS 시스템(Git, SVN 등)에 PUSH가 되면 자동으로 테스트와 빌드가 수행되어 안정적인 배포 파일을 만드는 과정 CD(Continuous Deployment) : 빌드 결과를 자동으로 운영 서버에 무중단 배포까지 진행되는 과정 CI 규칙 모든 소스 코드가 살아있고, 누구든 현재의 소스에 접근할 수 있는 단일 지점을 유지할 것 빌드 프로세스를 자동화해서 누구든 소스로부터 시스템을 빌드하는 단일 명령어를 사용할 수 있게 할 것 테스팅을 자동화해서 단일 명령어로 언제든지 시스템에 대한 건전한 테스트 수트를 실행할 수 있게 할 것 누구나 현재 실행 파일을 얻으면 지금까지 가장 완전한 실행 파일을 .. 2022. 3. 14.
8. EC2 서버에 프로젝트 배포 1. EC2에 프로젝트 Clone 받기 깃허브에서 코드를 받아올 수 있게 EC2에 깃을 설치 sudo yum install git 설치 완료 후, 설치 상태 확인 git --version git clone으로 프로젝트를 저장할 디렉토리 생성 mkdir ~/app && mkdir ~/app/step1 생성된 디렉토리 이동 cd ~/app/step1 본인의 깃허브 웹페이지에서 https 주소 복사 복사한 http 주소를 통해 git clone 진행 git clone 복사한 주소 git clone 끝났으면, 클론된 프로젝트로 이동해서 파일들이 복사되었는지 확인함 cd 프로젝트명 ls -ll 코드들이 잘 수행되는지 테스트로 검증 ./gradlew test gradle 버전 최신으로 업그레이드 https://jo.. 2022. 3. 7.
7. AWS 데이터베이스 서버환경 - AWS RDS 1. AWS RDS 애플리케이션 코드를 작성하는 것만큼 중요한 것이 데이터 베이스를 다루는 작업 EC2 서버와 연동 직접 데이터베이스를 설치하지 않음 AWS에서 언급한 작업을 모두 관리형 서비스인 RDS를 제공함 RDS는 AWS에서 지원하는 클라우드 기반 관계형 데이터베이스 하드웨어 프로비저닝, 데이터베이스 설정, 패치 및 백업과 같이 잦은 운영 작업을 자동화하여 개발자가 개발에 집중할 수 있게 지원하는 서비스이며, 추가로 조정 가능한 용량을 지원하여 예상치 못한 양의 데이터가 쌓여도 비용만 추가로 내면 정상적으로 서비스가 가능하다는 장점이 있음 2. RDS 인스턴스 생성 검색창에 rds 검색하여 선택하고, RDS 대시보드에서 데이터 베이스 생성 버튼 클릭 DB 엔진 선택화면에서 MariaDB를 선택 R.. 2022. 3. 5.
6. AWS 서버환경 - AWS EC2 1. AWS 외부에서 본인이 만든 서비스에 접근하려면 24시간 작동하는 서버 필수 집에 PC를 24시간 구동시킴 호스팅 서비스를 이용함 클라우드 서비스를 이용함 일반적으로 비용은 호스팅 서비스나 집 PC가 저렴하지만, 특정 시간에만 트래픽이 몰린다면 유동적으로 사양을 늘릴 수 있는 클라우드가 유리함 클라우드는 인터넷을 통해 서버, 스토리지, 데이터베이스, 네트워크, 소프트웨어, 모니터링 등의 컴퓨팅 서비스를 제공 AWS의 EC2는 서버 장비를 대여하고, 그 안의 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 기본적으로 지원 클라우드 형태 1) Infrastructure as a Service(IaaS, 아이아스, 이에스) 기존 물리 장비를 미들웨어와 함께 묶어둔 추상화 서비스 가상머신, 스토.. 2022. 3. 4.
5. Spring security와 OAuth2.0으로 로그인 기능 구현 1. Spring security & Spring security Oauth 2.0 클라이언트 Spring security : Authentication과 Authorization 기능을 가진 프레임워크 스프링 부트 1.5 vs 스프링 부트 2.0 스프링 부트 1.5에서의 OAuth2 연동 방법이 2.0에서 크게 달라졌지만 인터넷 자료를 보면 설정 방법에 크게 차이가 없음을 확인할 수 있음 => 이유는 spring-security-oauth2-autoconfigure 라이브러리 때문임 spring-security-oauth2-autoconfigure 라이브러리를 사용할 경우, 기존 부트 1.5에서 쓰던 설정을 2.0에서도 사용 가능함 스프링 부트 2 방식 자료를 찾고 싶은 경우 spring-securit.. 2022. 3. 3.
728x90
반응형