Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Backend] User server 설계 및 구상도 #16

Open
heojae opened this issue Feb 11, 2021 · 0 comments
Open

[Backend] User server 설계 및 구상도 #16

heojae opened this issue Feb 11, 2021 · 0 comments

Comments

@heojae
Copy link
Owner

heojae commented Feb 11, 2021

대주제 : User server 의 설계와 각각의 API 들의 설정이유들을 명시하고 싶다.

소주제 : db 설계 와 활용한 각 라이브러리들을 정리하고 싶다.

API 설명

  • Login

    Front 에서, 요청을 날려, 유저인지 확인하고, 유저의 정보를 돌려주는 API 입니다.

  • AuthenticateGetUserInfo

    프론트에서 Login 을 통해서, 얻은 access_token 값을, 브라우저 Cookie 로 저장하고, 이를 통해서, Login 을 대신해서,

    유저의 정보를 들고 올 수 있도록, 구현한 API 입니다.

    redis 에 올리는 편이 좀 더, 빠른 접근이 가능하였겠지만, 다양한 라이브러리들을 활용하고 싶었기에, 올리지는 않았습니다.

  • Authenticate

    access_token 을 통한, 유저 인증용으로 만든 API 입니다.

    redis 를 활용하여, access_token_list 에 접근하여, 빠르게 처리 가능하도록 구현해두었으며,

    다른 서버의 모든 API 들이, 이 user server - Authenticate 을 접근하여, 처리를 할 예정이기에,

    이와 같이 redis 로 빠른 처리가 필요하다고 생각하였습니다.


DB 설계도

아래와 같이, User 하나의 테이블로 이루어져있으며, 기본적인 정보들만, 포함하고 있습니다.
erdcloud 를 활용하여 그렸습니다.

스크린샷 2021-02-11 오후 7 51 12


라이브러리

asyncio , uvloop, grpc, databases 등을 통하여, 만들었으며,

비동기(async) 형태로 구현하였습니다.

async 하게,Server 를 구현하기 위해서, FastAPI 의 DB(databases) 사용방식을 많이 활용하였고, 그를 기반으로 코드를 많이 구성하였습니다.

그리고, grpc-python 과 관련된 자료들을 읽고, 동기와 비동기, 그리고 여라 방식으로, GRPC-Python 서버를 구현하는 방법들을 참조하여 구현하였습니다.

GRPC - Python

FastAPI and Databases, SqlAlchemy

UVloop (async io를 더 빠르게)

Redis

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant