프로젝트 구현(7)
-
[미니 프로젝트] 실시간 주식 관람 웹사이트 (Feat. Flask)
일시 22.05.09 ~ 22.05.12 인원 4인 (프론트 백엔드 구분 없음) 기술 스택 프론트엔드 : HTML, CSS, 바닐라 JS, JinJa2 (Template Engine) 백엔드 : Flask(Python) DB : MongoDB 협업 툴 : Github CI & CD : Github Actions, Code Deploy, S3 배포 환경 : Amazon linux 2 깃 링크 https://github.com/SangHoonly/stock_team4 데모 링크 https://youtu.be/lXHh35wAfsw 실시간 인기 있는 주식 종목을 보여주는 웹 사이트를 구현하였다. [내가 관심있는 종목 골라보기]를 통해 로그인을 할 수 있으며, 회원 가입 및 탈퇴기능, 관심있는 주식 등록 및 열람..
2022.05.12 -
5. 서비스 아키텍처 구성
간단한 아티클 조회 프로그램을 만들어 보았다. 의도한 대로 서비스는 제대로 동작한다. 이제 추가 / 수정 / 삭제 등의 나머지 기능을 구현할 차례이다. 이번 프로젝트는 서버 운영과 지속적, 무중단 배포를 연습하기 위해, 먼저 서비스 배포를 하고 추가 기능을 구현할 것이다. 그래서 서비스 아키텍처를 구성해 보았다. 1. 기본 서비스 아키텍처 AWS EC2가 기본적으로 제공하는 t2 인스턴스 한 대만 빌리고 톰캣 서비스 서버 또한 한 대만 돌아가는, 가장 기본적인 서비스 아키텍처이다. 사용자 요청 처리 최적화보다는, 배포가 문제없이 수행되는지, 톰캣 서버는 문제없이 작동하는지, 사용자의 요청을 처리할 수 있는지 등 기본적인 세팅 사항 동작 여부를 체크하는 용도로 아키텍처를 설계하였다. 하지만 t2 인스턴스 ..
2022.02.24 -
4. 아티클 전체 조회 기능 구현
프로젝트에서 구현해야 할 다양한 기능들 중에서, 아티클(게시글) 전체 조회 기능을 가장 먼저 구현하기로 결정했다. 그 이유는, '게시글 프로젝트'의 정체성이자 가장 중요한 기능이 바로 '게시글 조회 기능'이기 때문이다. 한편 엔드포인트와 그에 따른 response 포맷이 공개되어 있으므로, 이 프로젝트는 TDD로 구현하기 매우 적합하다. response 포맷을 그대로 테스트 케이스로 작성한 다음, 테스트를 통과하도록 코드를 구현하면 되기 때문이다. 중간 중간의 기록들을 공유하며 코드를 어떻게 짰는지 설명하려 했지만, 불찰로 인해 기록들이 날아가버렸다.(ㅠㅠ) 현재 남아있는 건 완성된 코드이다. 따라서 이번 글은 코드 작업의 비약이 크니 감안하고 읽어주시길 바란다. 1. ArticlesController ..
2022.02.20 -
3. 프로젝트 생성 및 mySQL DB 연동
1. 프로젝트 생성 본격적으로 프로젝트를 시작할 시간이다. https://start.spring.io/로 들어가서, 스프링 프로젝트를 생성한다. 그레이들 버전, 자바 11 버전으로 프로젝트를 생성하였으며, 이번 프로젝트의 템플릿 엔진으로는 타임리프를 사용, SQL 매핑 프레임워크로는 마이바티스를 사용할 것이다. 따라서 dependency에서 이 두개를 찾아서 추가해준다. 이 외에도 로그인 처리를 위한 spring security, 롬복 등을 추가해 준다. 후에 사용할 CI/CD 툴과의 연동을 위해서, 깃허브 저장소도 살포시 하나 만들어 준다. 깃허브 주소 : https://github.com/SangHoonly/real-world 2. mySQL 연동 먼저 mySQL 서버를 3306 포트로 띄운다.(기본..
2022.02.20 -
2. ER 다이어그램 작성
프로젝트를 구현에 앞서 엔티티들은 어떤 속성들을 가지고 있는지, 어떤 연관 관계가 있는지 먼저 파악하는 것이 중요하다. 엔티티들의 구조와 관계를 명확히 설계하면 스프링 / DB 단에서 도메인 객체 / 컬럼과 직접적으로 매핑시킬 수 있으며 엔티티들을 일관성있게 사용할 수 있기 때문이다. 엔티티들의 관계(Entity Relationship)와 특성을 파악하기 위해, ER 다이어그램(Entity Relationship Diagram)을 그려보자. 앞서 추출된 엔티티는 총 6가지이며 - 사용자(User) - 게시글(Article) - 댓글(Comment) - 선호(Favorite) - 팔로우(Follow) - 태그(Tag) 리얼 월드 response 포맷과 API 스펙을 바탕으로 각 엔티티들의 애트리뷰트를 추출..
2022.02.20 -
1. 요구 기능 확인 및 엔티티 추출
요구된 기능(https://realworld-docs.netlify.app/docs/implementation-creation/features/)을 한글로 풀어 써보면 다음과 같다. 1. JWT를 이용한 사용자 인증 (로그인 / 회원가입 페이지 + 설정 페이지 로그아웃 버튼 적용) 2. Users CRU 기능 (Delete 제외, 회원가입 & 설정 페이지 적용) 3. 게시글(아티클) CRUD 기능 4. 게시글(댓글) CRU 기능 (Delete 제외) 5. GET 요청을 통한 게시글 리스트(페이지네이션 적용) 보여주기 기능 6. 선호(Favorite) 게시글 기능 7. 다른 사용자 팔로우 기능 이쯤 되면 medium 그자체 이를 바탕으로 주요한 엔티티를 추출해 보면 1. 사용자 (User) 2. 게시글 (..
2022.02.20 -
API 스펙 기반 백엔드 구현 연습기(feat.Realworld)
백문이 불여일타 (스프링 일타 강사 김영한님 띵언) 아무리 강의를 듣고 공식 문서를 보고 블로깅을 해도, 직접 고민하며 손으로 코드를 짜는 것 보다 더 와 닿을 수는 없을 것이다. 하지만 막상, 프로젝트를 진행하며 손으로 코드를 짜려 해도 '무슨 프로젝트을 어떻게 만들어야 할 지'부터 막히는 경우가 허다하다. 가이드라인 자체가 없기 때문에 이런 일이 발생하는데, 다행히 명확한 API 스펙 / 구현 가이드라인이 주어져 백엔드 프로젝트 구현을 마음껏 연습할 수 있는 사이트를 발견하였다!! real world 공식 문서 : https://realworld-docs.netlify.app/docs/intro 블로그 사이트인 Medium.com과 거의 동일한 API 스펙이 주어지고, 이를 이용하여 백엔드를 구현할 ..
2022.02.20