---
# System prepended metadata

title: Waber 微服務技術鏈 階段A：MVP

---


# Waber 微服務技術鏈 階段A：MVP

## Waber-MA01: 旅程的起點



1. 使用[Spring Boot Initializr](https://start.spring.io/) 建立Waber Intellij專案
    - 專案依賴選取以下：
        * Spring Boot DevTools
        * Spring Configuration Processor
        * Lombok
        * Spring Web
        * Spring Data JPA
        * H2 Database
        * Validation
        * Spring Boot Actuator
        * Testcontainers
    - 並用Intellij開啟Spring Boot Initializr產生出來的專案目錄

2. 對應以下目錄結構在Intellij中創建Multi-module Maven專案
    - 其中tw.waterball.ddd.waber改成你maven的group id (e.g. `tw.wally.waber`)
    - 你需要先理解Maven's Multimodule [Maven 使用多模組(multi-module)專案的好處](https://matthung0807.blogspot.com/2018/12/maven-multi-module.html)。
    - [Maven副本](https://hackmd.io/1yPEXU6DS9q-z0lpBS-rFw)

```
├── pom.xml
├── waber-match
│   ├── pom.xml
│   ├── src
│   │   └── main
│   │       └── java
│   │           └── tw
│   │               └── waterball
│   │                   └── ddd
│   │                       └── waber
│   │                           └── match
│   │                               └── MatchApplication.java
│   └── waber-match.iml
├── waber-payment
│   ├── pom.xml
│   ├── src
│   │   └── main
│   │       └── java
│   │           └── tw
│   │               └── waterball
│   │                   └── ddd
│   │                       └── waber
│   │                           └── payment
│   │                               └── PaymentApplication.java
│   └── waber-payment.iml
├── waber-trip
│   ├── pom.xml
│   ├── src
│   │   └── main
│   │       └── java
│   │           └── tw
│   │               └── waterball
│   │                   └── ddd
│   │                       └── waber
│   │                           └── trip
│   │                               └── TripApplication.java
│   └── waber-trip.iml
├── waber-user
│   ├── pom.xml
│   ├── src
│   │   └── main
│   │       └── java
│   │           └── tw
│   │               └── waterball
│   │                   └── ddd
│   │                       └── waber
│   │                           └──  user
│   │                               └── UserApplication.java
│   └── waber-user.iml
└── waber.iml
```

> 每一個Module為一個微服務 （或是在DDD中我們稱之為Bounded-Context）
> Intellij建立Multi-module專案 
> ![](https://i.imgur.com/Sf8geqP.png)

## Waber-MA02: 乘客/司機？平台最重要的多重角色

## Waber-MA03: 匹配，你最重要的業務邏輯


## Waber-MA04: 你和乘客的旅程即將開始


## Waber-MA05: 付錢吧！計算車錢



你已經完成了最初版的微服務叫車系統，
但僅僅要實現功能的話，我們並不需要「微服務」。
我們要的是微服務的優點：「Scalability / Maintainability ／ Extensibility」，
因此，還需要大量的基礎建設來將這些被切得小小的服務組建起來。

我們接著往更硬核的技術前進吧...！
----> [Waber 微服務技術鏈 階段B：基礎建設](https://hackmd.io/NBqfaM3pT8ysdXiqxwanqA?view)
