μ΄ λ¬Έμλ Travis CIλ₯Ό μ¬μ©ν λ°°ν¬ μλνμ λν΄ λ€λ£¨κ³ μμ΅λλ€. CI/CDμ κ°λ κ³Ό κ·μΉ, κ·Έλ¦¬κ³ Travis CIμμ μ°λ λ°©λ²μ λν΄ μ€λͺ νκ³ μμ΅λλ€. λν .travis.yml νμΌμ ꡬμ±κ³Ό κ° νλͺ©μ μν μ λν΄ μμΈν λ€λ£¨κ³ μμ΅λλ€.
μ΄ λ¬Έμλ RDS μ κ·Όκ³Ό κ΄λ ¨λ λ΄μ©μ λ€λ£¨κ³ μμ΅λλ€. RDS ν μ΄λΈ μμ±κ³Ό μ€νλ§ μΈμ ν μ΄λΈ schema-mysql.sql RDSμ λ°μνλ λ°©λ², νλ‘μ νΈ μ€μ λ° EC2 μ€μ λ±μ΄ ν¬ν¨λμ΄ μμ΅λλ€.
μ΄ λ¬Έμλ EC2 μλ²μ νλ‘μ νΈλ₯Ό λ°°ν¬νλ λ°©λ²μ μ€λͺ ν©λλ€. νλ‘μ νΈλ₯Ό ν΄λ‘ νκ³ , λ°°ν¬ μ€ν¬λ¦½νΈλ₯Ό λ§λ€κ³ , μΈλΆ Security νμΌμ λ±λ‘νλ κ³Όμ μ λ€λ£Ήλλ€.
μ΄ λ¬Έμλ AWS RDSλ₯Ό μ¬μ©νλ λ°©λ²μ λν΄ μ€λͺ ν©λλ€. RDS μΈμ€ν΄μ€λ₯Ό μμ±νκ³ , νλΌλ―Έν°λ₯Ό μ€μ νκ³ , μ μνλ λ°©λ² λ±μ΄ ν¬ν¨λ©λλ€.
μ΄ λ¬Έμλ AWS EC2 μλ²λ₯Ό μ€μ νλ λ°©λ²μ μ€λͺ ν©λλ€. EC2λ IaaSμ ν μ’ λ₯λ‘, κ°μλ¨Έμ , μ€ν 리μ§, λ€νΈμν¬, μ΄μ체μ λ±μ IT μΈνλΌλ₯Ό λμ¬ν©λλ€. EC2 μΈμ€ν΄μ€, pem ν€, SSH μ μ λ°©λ², Linux Serverμ νμ μ€μ μ λ€λ£Ήλλ€.
μ΄ λ¬Έμλ Spring Bootμμ μΈμ μ μ₯μλ‘ DBλ₯Ό μ¬μ©νλ λ°©λ²κ³Ό JDBCλ₯Ό μ¬μ©νλ λ°©λ²μ λ€λ£Ήλλ€. μν리ν°λ₯Ό κΈ°μ‘΄ API ν μ€νΈμ μ μ©νλ λ°©λ²μ λν΄ μ€λͺ ν©λλ€. κΈ°μ‘΄ API ν μ€νΈμμ λ°μνλ λ¬Έμ μ κ³Ό μ΄λ₯Ό ν΄κ²°νκΈ° μν λ°©λ²μ λν΄ λ€λ£Ήλλ€.
μ΄ λ¬Έμλ μλ° μ½λμμ λ°λ³΅λλ μΈμ κ°μ κ°μ νκΈ° μν΄ Annotationμ μ¬μ©νλ λ°©λ²μ μ€λͺ ν©λλ€. @LoginUser μ΄λ Έν μ΄μ μ λ§λ€μ΄ λ©μλ μΈμλ‘ μΈμ κ°μ λ°λ‘ λ°μ μ μκ² λ³κ²½ν©λλ€.
μ΄ λ¬Έμλ Spring Securityμ OAuth 2.0μ λν λ΄μ©μ λ€λ£Ήλλ€. κ΅¬κΈ μλΉμ€ λ±λ‘ λ°©λ²κ³Ό Google λ‘κ·ΈμΈ μ°λ λ°©λ², κ·Έλ¦¬κ³ Spring Security μ€μ λ°©λ² λ±μ λν΄ μ€λͺ ν©λλ€.
μ΄ λ¬Έμλ λ¨Έμ€ν μΉλ₯Ό μ¬μ©νλ λ°©λ²κ³Ό λ μ΄μμ λ°©μ, JS μ€μ½ν, SpringDataJpaμμ μ 곡νμ§ μλ λ©μλ μ¬μ©, κ·λͺ¨κ° μλ νλ‘μ νΈ λ°μ΄ν° μ‘°ν λ±μ λν΄ μ€λͺ νκ³ μλ€.
μ΄ λ¬Έμλ JPA Auditingμ μ¬μ©νμ¬ μμ±μκ°κ³Ό μμ μκ°μ μλμΌλ‘ λ±λ‘νλ λ°©λ²μ μ€λͺ ν©λλ€. BaseTimeEntity ν΄λμ€λ₯Ό λ§λ€μ΄μ Entity ν΄λμ€λ€μ΄ μμλ°λλ‘ νκ³ , JPA Auditing μ΄λ Έν μ΄μ μ νμ±ννμ¬ μλμΌλ‘ μκ°μ λ±λ‘ν©λλ€.
μ΄ λ¬Έμλ JPAμ Update κΈ°λ₯μ λν΄ λ€λ£¨κ³ μμ΅λλ€. JPAμ μμμ± μ»¨ν μ€νΈλ₯Ό μ΄μ©νλ©΄ λ°μ΄ν°λ² μ΄μ€μ 쿼리λ₯Ό λ λ¦¬μ§ μκ³ λ Entity κ°μ²΄μ κ°μ λ³κ²½ν μ μμΌλ©°, μ΄λ₯Ό λν° μ²΄νΉμ΄λΌκ³ ν©λλ€.
μ΄ λ¬Έμλ λ±λ‘/μμ /μ‘°ν APIλ₯Ό ꡬννλ λ°©λ²μ λν΄ μ€λͺ ν©λλ€. APIλ₯Ό μν 3κ°μ ν΄λμ€, Bean μ£Όμ λ°©μ, λ±λ‘/μ‘°ν DTO ν΄λμ€, λ±λ‘ ν μ€νΈ μ½λ λ±μ λν΄ λ€λ£Ήλλ€.
μ΄ λ¬Έμλ μ€νλ§ λΆνΈμμ JPAλ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ² μ΄μ€λ₯Ό λ€λ£¨λ λ°©λ²μ λν΄ μ€λͺ ν©λλ€. Spring Data JPAλ₯Ό μ¬μ©νλ©΄ ꡬν체 κ΅μ²΄μ μ μ₯μ κ΅μ²΄κ° μ½κ³ , Entity ν΄λμ€μμλ Setter λ©μλλ₯Ό λ§λ€μ§ μμ΅λλ€.
μ΄ λ¬Έμλ 둬볡(Lombok)μ λν λ΄μ©μ λ€λ£¨κ³ μμΌλ©°, μ΄λ Έν μ΄μ μ μ¬μ©νμ¬ Getter, Setter, κΈ°λ³Έ μμ±μ, toString λ±μ μλ μμ±νλ λ°©λ²μ μ€λͺ ν©λλ€. λν, 둬볡μ μ¬μ©νμ¬ μμ±ν μ½λλ₯Ό ν μ€νΈνλ λ°©λ²μ λ€λ£Ήλλ€.
μ΄ λ¬Έμλ μ€νλ§ λΆνΈμμ ν μ€νΈ μ½λλ₯Ό μμ±νλ λ°©λ²μ λν΄ λ€λ£Ήλλ€. TDD, λ λ κ·Έλ¦° μ¬μ΄ν΄, λ¨μ ν μ€νΈμ μ΄μ , λ©μΈ ν΄λμ€ μμ±, API μμ±, WAS λμ ν μ€νΈ μ½λλ‘ κ²μ¦, ν μ€νΈ μ½λμ μ€μμ± λ±μ λν΄ μ€λͺ ν©λλ€.
μ΄ λ¬Έμλ μΈν 리μ μ΄λ₯Ό μ¬μ©νμ¬ μ€νλ§ λΆνΈλ₯Ό μμνλ λ°©λ²μ λν΄ μ€λͺ ν©λλ€. μΈν 리μ μ΄μ μ₯μ , νλ‘μ νΈ μμ±, build.gradle νμΌμ ꡬμ±, κ·Έλ¦¬κ³ GitHub μ°λμ λν΄ λ€λ£Ήλλ€.
Spring Security, H2 μ°λνμ λ λ¬Έμ ν΄κ²°
Gradle Method λ체
λ²μ μ€λ₯
JDBC Template μμ MyBatis λ‘ λ§μ΄κ·Έλμ΄μ νλ κ³Όμ μμ λ§λ μλ¬ μ§μνμ§ μλ λ¦¬ν΄ νμ