본문 바로가기
미니 프로젝트

AWS 아키텍처 기반 장고 커뮤니티 게시판 구축

by 종바깅 2021. 6. 2.

AWS 기반 커뮤니티 게시판 구축

프로젝트 사용 기술 및 개발 도구

AWS Docker
img img
Pycharm  django
img img

비즈니스 요구사항 - [Dev] Django

  • 회원가입이 가능했으면 함.
  • 수정,삭제, 검색 기능이 있어야 함.
  • 이미지 업로드 기능 추가 .
  • 게시판 카테고리가 있어야함.
  • 특정 권한을 가지는 유저가 게시판 생성 가능
  • 유저들의 게시판 이용빈도에 따라 노출되는 게시판이 유동적으로 변화되도록 설계
  • 로그아웃 기능이 있어야함.

MTV 아키텍처 (MVC아키텍처 기반)

img

Models(데이터베이스 설계)

  • user - 장고내장 회원관리 시스템 사용 : 권한관리 편의성을 위해 내장회원시스템 사용
  • post - 게시판에 등록될 포스트, 외래키로 board의 id참조
  • board - 태그라는 속성에서 하나의 키워드를 입력받음
  • comment - user의 id와 post의 id를 외래키로 참조
  • favorite - user의 관심키워드를 등록하도록 하여 board의 태그와 비교하여 게시판을 추천하도록 함

ERD 설계

img

Templates

  • layout : 사이트 전체적인 틀을 표시, block content 사용
  • form : 로그인,회원가입, 포스팅 등 form이 요구되는 페이지를 표시
  • post_list : 메인페이지, 서버에 등록된 게시판과 글을 보여주고 게시판, 포스트 검색기능 지원
  • board_list : 검색된 게시판을 표시하는 페이지
  • post_detail : 포스트의 상세 내용 페이지, 포스트의 id를 GET요청하여 댓글기능 구현
  • profile : 유저정보 페이지, 유저 id를 GET요청

View(Class Based View)

  • PostListVIew - Get요청을 처리하여 게시판, 포스트 쿼리셋 표시, Pagination 추가
  • PostCreateView,PostUpdateView - form의 Post,Update 요청을 처리하여 DB 에 post 추가
  • PostDeleteView - Delete요청 처리하여 DB로부터 post 삭제
  • BoardListView - Get요청을 처리하여 게시판 쿼리셋 표시
  • CommetCreateView post_detail 페이지 내의 form의 Post요청을 처리하여 DB에 comment추가
  • CommentDeleteView - Delete요청 처리하여 DB로부터 comment 삭제

구현화면

imgimg

아키텍처 요구사항 - [Infra] AWS

  • Database의 외부 접속 불가
  • 대용량 트래픽에 대응
  • 인프라의 확장성

인프라 아키텍처

img

  1. DB 외부 접근 불가
    • RDS를 Private Subnet에서 구성함.
  2. 대용량 트래픽 대응
    • ALB를 통해서 트래픽을 가용영역 A와 C에 분산
  3. 인프라 확장성 확보
    • Public Subnet에서 ASG을 구성

아키텍처 기대 효과

  • 초기 투자 비용 없이 사용한 만큼만 지불할수 있어 비용절감에 효율적.
  • 예측 불가한 과다 트래픽에 빠르게 대응 가능 .
  • 차후 Auto Scaling 통한 용량 확장 가능성.
  • 내구성, 가용성이 높아 안정성이 확보 된다.
  • 관리 및 유지보수가 용이하여 시간을 절약할 수 있음.

Demo.

http://myproject-1174782895.ap-northeast-2.elb.amazonaws.com/boards/

컨테이너화 파일

docker pull whdgus003/my-djangoweb:v2

Git Repository

https://github.com/zezeg2/encore-django-miniproject.git

댓글