Open heojae opened 3 years ago
대주제 : User server 의 설계와 각각의 API 들의 설정이유들을 명시하고 싶다. 소주제 : db 설계 와 활용한 각 라이브러리들을 정리하고 싶다.
대주제 : User server 의 설계와 각각의 API 들의 설정이유들을 명시하고 싶다.
소주제 : db 설계 와 활용한 각 라이브러리들을 정리하고 싶다.
Front 에서, 요청을 날려, 유저인지 확인하고, 유저의 정보를 돌려주는 API 입니다.
Front
API
프론트에서 Login 을 통해서, 얻은 access_token 값을, 브라우저 Cookie 로 저장하고, 이를 통해서, Login 을 대신해서,
Login
access_token
브라우저 Cookie
유저의 정보를 들고 올 수 있도록, 구현한 API 입니다.
redis 에 올리는 편이 좀 더, 빠른 접근이 가능하였겠지만, 다양한 라이브러리들을 활용하고 싶었기에, 올리지는 않았습니다.
redis
access_token 을 통한, 유저 인증용으로 만든 API 입니다.
redis 를 활용하여, access_token_list 에 접근하여, 빠르게 처리 가능하도록 구현해두었으며,
access_token_list
다른 서버의 모든 API 들이, 이 user server - Authenticate 을 접근하여, 처리를 할 예정이기에,
user server - Authenticate
이와 같이 redis 로 빠른 처리가 필요하다고 생각하였습니다.
아래와 같이, User 하나의 테이블로 이루어져있으며, 기본적인 정보들만, 포함하고 있습니다. erdcloud 를 활용하여 그렸습니다.
User
asyncio , uvloop, grpc, databases 등을 통하여, 만들었으며,
asyncio
uvloop
grpc
databases
비동기(async) 형태로 구현하였습니다.
async
async 하게,Server 를 구현하기 위해서, FastAPI 의 DB(databases) 사용방식을 많이 활용하였고, 그를 기반으로 코드를 많이 구성하였습니다. 그리고, grpc-python 과 관련된 자료들을 읽고, 동기와 비동기, 그리고 여라 방식으로, GRPC-Python 서버를 구현하는 방법들을 참조하여 구현하였습니다.
async 하게,Server 를 구현하기 위해서, FastAPI 의 DB(databases) 사용방식을 많이 활용하였고, 그를 기반으로 코드를 많이 구성하였습니다.
Server
FastAPI
그리고, grpc-python 과 관련된 자료들을 읽고, 동기와 비동기, 그리고 여라 방식으로, GRPC-Python 서버를 구현하는 방법들을 참조하여 구현하였습니다.
grpc-python
GRPC-Python
GRPC - Python
FastAPI and Databases, SqlAlchemy
UVloop (async io를 더 빠르게)
Redis
API 설명
Login
Front
에서, 요청을 날려, 유저인지 확인하고, 유저의 정보를 돌려주는API
입니다.AuthenticateGetUserInfo
프론트에서
Login
을 통해서, 얻은access_token
값을,브라우저 Cookie
로 저장하고, 이를 통해서,Login
을 대신해서,유저의 정보를 들고 올 수 있도록, 구현한 API 입니다.
Authenticate
access_token
을 통한, 유저 인증용으로 만든 API 입니다.redis
를 활용하여,access_token_list
에 접근하여, 빠르게 처리 가능하도록 구현해두었으며,다른 서버의 모든
API
들이, 이user server - Authenticate
을 접근하여, 처리를 할 예정이기에,이와 같이
redis
로 빠른 처리가 필요하다고 생각하였습니다.DB 설계도
아래와 같이,
User
하나의 테이블로 이루어져있으며, 기본적인 정보들만, 포함하고 있습니다.erdcloud 를 활용하여 그렸습니다.
라이브러리
asyncio
,uvloop
,grpc
,databases
등을 통하여, 만들었으며,비동기(
async
) 형태로 구현하였습니다.GRPC - Python
FastAPI and Databases, SqlAlchemy
UVloop (async io를 더 빠르게)
Redis