f-lab-edu / used-trading-market Goto Github PK
View Code? Open in Web Editor NEW[당근마켓 모티브] 개인 간 거래 플랫폼 API 서버
[당근마켓 모티브] 개인 간 거래 플랫폼 API 서버
헥사고날 아키텍처를 적용한 멀티 모듈 프로젝트 구조를 생성한다.
상품 조회 프로세스를 구현한다.
조회 프로세스는 domain과 application 모듈 코드를 작성하지 않고,
Inbound Adapter 에서 Outbound Adapter 와 직접 통신한다.
변경 가능성(UI의 변경 가능성이 높을 것)을 고려하여 의존 방향은 제어 흐름과 동일하게 가져간다.
GET
/api/v1/posts
HTTP 1.1
GET
/api/v1/posts/{postId}
HTTP 1.1
GET
/api/v1/posts/keywords?keyword={}
HTTP 1.1
GET
/api/v1/posts/categories?catedoryId={}
HTTP 1.1
프로젝트에 JaCoCo를 적용하고, 테스트 커버리지를 설정한다.
https://docs.gradle.org/current/userguide/jacoco_plugin.html#header
https://seller-lee.github.io/java-code-coverage-tool-part2
로그인 프로세스를 구현한다.
POST
/api/v1/members/login
HTTP 1.1
데이터베이스 테이블을 설계하고, ORM 엔티티를 생성한다.
상품 등록 프로세스를 구현한다.
POST
/api/v1/posts
HTTP 1.1
회원 가입 프로세스를 구현한다.
POST
/api/v1/members
HTTP 1.1
프로젝트에 카프카를 적용하고, 회원 지역 변경 프로세스를 구현한다.
PATCH
/api/v1/members/regions
HTTP 1.1
post는 작성자의 region을 참조할 수 있어야 한다. post를 작성할 때 member의 regionId를 넣어주기 때문에 아무런 문제가 발생하지 않는다. 하지만 member의 region이 변경된다면, member가 작성한 모든 post를 select한 뒤 regionId를 변경시켜야 하는 오버헤드가 발생한다.
member의 region 정보를 변경하는 것은 빈번하게 발생하지 않기에 위 처럼 처리하는 방식도 UX 관점에서 큰 문제가 발생하진 않을 것이라 생각한다. 하지만 이후 실제로 문제가 발생할 가능성이 있는 유사한 문제를 마주쳤을 때, 해결할 수 있는 능력을 기르기 위해 학습 차원에서 카프카를 적용시켜 이벤트를 처리하도록 구현해보려 한다.
bootstrap 모듈에 Spring Rest Docs를 적용한다.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.