Skip to content

v1. Retrospective

Latest

Choose a tag to compare

@apehuman apehuman released this 29 May 20:23
· 1 commit to main since this release
f26dad8

SW Architecture

Before After
pure REST API MSA or serverless/CSR(2-tier)
image Option1. Full-stack (SSR) Service + REST API server image
Option2. Only Python Front -- Streamlit: 2-tier (CSR)
  • [장점] 순수 back으로 만들면, 서버만 돌리면 어디서든 바로 REST API 기능 붙여서 이용 가능하다. (Library/API Server)

  • [단점] 순수 back으로 전체 Web 서비스 구현하는 것은 손이 많이 간다: Framework에서 제공하는 기능이 적다. (대신 구현 자유도가 높다)

    1. Project File 구조 직접 만들어야 한다
    2. DB도 직접 원하는걸 선택해서 붙여줘야 한다. => 다만 python은 DB 붙여서 사용할 때, ORM으로 주로 SQLAlchemy를 de facto Standard Library로 사용하므로 배워두면 계속해서 써먹을 수 있다
    3. User Table 따로 만들어서 직접 관리해야 한다
  • Conclusion: Service-based

    1. 기존 Service는, Web Serivce 핵심 기능을 모두 갖춘 Django(Full-stack)로 쉽고 빠르게 개발 가능 (User, DB-ORM, Security 모두 Internal하게 제공하여 내가 직접 관리할 필요가 없다)
    2. 그 외 독립적인 서비스/기능들은 REST API로 분리하여 제공
    3. 외부 REST API 사용하는 경우에도 분리하여 제공

    => Full-stack Web Service/App + REST API server (MSA): 즉 기존 Web serivce는 Full-stack으로 쉽고 빠르게 개발 가능, 거기에 REST API로 서비스 별로 분리해서 개발하는 형태가 Best (다만 Django 사용할 경우, REST API Framework를 따로 설치해야 서로 붙일 수 있다)


CSR vs. SSR

CSR SSR
On-device Cloud Server

Python Framework: Django vs. Flask / FastAPI

Support: Internal vs. External Django Flask / FastAPI
Template Full Stack (SSR) Back + Jinja
REST API △: + Django REST Framework O
DB & ORM Internal (only RDBMS) SQLAlchemy + any DB
Security / User Access Management O X: OAuth2

FastAPI Development Process/Pattern


Risk = Time: Learning Curve & Teamwork

  1. Languages & Framework (Front & Back) => Fluency/Experienced/familiar
  2. Communication: PM, Docs/Diagrams, Messenger/Meeting => Notion
  3. Code Coop: Git/GitHub

Incompetence

  • Web Development Experience
  • DB & ORM
  • Framework: Security (OAuth2 & Session), User Management
  • PM

Ending Credit

Tools (Tech Stack): Python Web + AI

AI Audio: Vito API
Text: OpenAI API GPT 3.5 turbo
Front Vue -> Streamlit
Back FastAPI
Deployment AWS & GitHub Action

Team

  • 임범준: AI-Audio
    • STT (file upload or 음성인식 두가지 방식으로 사용 가능)
    • 화자 구분
  • 장우재: AI-Text, Back + Front
    • Folder & Note CRU
    • User Log in/out
    • AI-Text
      • translation (prompt engineering 통해 src_lang 없이 target_lang만 주어져도 번역 가능)
      • summary (3줄요약 or 회의록 요약 두가지 형태로 제공; 일관적인 응답 나오도록 parameter 조정)
      • chatbot
    • FastAPI에서 OpenAI API로부터 응답 받아 원하는 형태로 가공하여 REST API 서빙
    • Streamlit에서 서버 API 기능 시각화하여 테스트
  • 허소영: Front + Back
    • 메인 화면 설계 및 구현
    • AI-Audio 화면과 Note 생성 화면 연결
    • 최초 계정 생성 시 default 폴더 생성하여 접근할 수 있도록 로직 변경
    • Note Delete 로직 구현
  • 김민찬: Deployment
    • GitHub Action을 통해 수정사항 자동으로 AWS에서 build하여 배포