๐ฆChange Log
v2.1.0 - 2025.07.14
โจ ์๋ก์ด ๊ธฐ๋ฅ (Features)
Spring-boot-admin client ๋์
๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ์ ๊ตฌํํ์์ต๋๋ค.
v2.0.0 - 2025.06.01
BookMeta Entity๋ฅผ ์๋กญ๊ฒ ๋์ ํ์ฌ Collection์ ๋ณธ์ฐ์ ๊ธฐ๋ฅ์ ์ถฉ์ค ํ ์ ์๋๋ก ๊ฐ์
โจ ์๋ก์ด ๊ธฐ๋ฅ (Features)
BookMeta ๋์
๊ธฐ์กด Book ์ํฐํฐ์ ๊ธฐ์ ๋์๋ Book์ Meta ์ ๋ณด๋ฅผ BookMeta๋ผ๋ ๋ณ๋์ ์ํฐํฐ์ ๊ธฐ์ ํ๋๋ก ๊ฐ์ ํ์์ต๋๋ค.
์ด๋ฅผ ํตํด Book์ Book ๋ณธ์ฐ์ ๊ธฐ๋ฅ์ ์ถฉ์คํ ์ ์๊ฒ ๋์์ต๋๋ค.
BookMetaCollection Entity ๋์
๊ธฐ์กด BookCollection ์ํฐํฐ๋ฅผ ์ ๊ฑฐํ๊ณ BookMetaCollection ์ํฐํฐ๋ฅผ ๋์ ํ์์ต๋๋ค.
Collection์ ์ฑ ์ ๊ธฐ๋ณธ์ ๋ณด๋ง์ ๋ณด์ฌ์ฃผ๋๋ก ๊ฐ์ ํ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ปฌ๋ ์ ์ ๋ณธ์ฐ์ ๊ธฐ๋ฅ์ ์ถฉ์คํ ์ ์๊ฒ ๋์์ต๋๋ค.
๐ ๊ฐ์ ์ฌํญ (Improvements)
Collection API spec ๊ฐ์
collection์ api ์๋ํฌ์ธํธ๋ค์ด๋ฐ์ด RESTfulํ๊ฒ ๋ณ๊ฒฝ๋์์ต๋๋ค.
create/add/delete ๋ฑ์ ๋ค์ด๋ฐ ์ฌ์ฉ์ ์ง์ํจ์ผ๋ก์จ RESTfulํ๊ฒ ๋ณ๊ฒฝ๋์์ต๋๋ค.
๐ ๊ธฐํ ๋ณ๊ฒฝ์ฌํญ (Other Changes)
springdoc-openapi-starter-webmvc-ui ๋์
api reference๋ฅผ ์นํ์ด์ง์์ ์์ฝ๊ฒ ํ์ ํ ์ ์๊ฒ ๋์์ต๋๋ค.
v1.0.0 - 2025.05.23
Gomdolbook ๋ฐฑ์๋์ ์ฒซ ๋ฒ์งธ ์ ์ ๋ฆด๋ฆฌ์ฆ์ ๋๋ค! ์ด ๋ฒ์ ์์๋ ์ฌ์ฉ์์ ๋ ์ ๊ฒฝํ์ ํ๋ถํ๊ฒ ํ๊ณ , ํจ์จ์ ์ธ ์ฑ ๊ด๋ฆฌ๋ฅผ ๋๋ ํต์ฌ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํฉ๋๋ค.
โจ ์๋ก์ด ๊ธฐ๋ฅ (Features)
๋ ์ ๊ธฐ๋ก ๊ด๋ฆฌ:
์ฑ ์ ๋ ์ ์ํ(READING, FINISHED, TO_READ, NEW)๋ฅผ ์ ์ฅํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
๊ฐ ์ฑ ์ ๋ํ ์ธ ๊ฐ์ง ๊ฐ์ธ ๋ ธํธ(note1, note2, note3)๋ฅผ ์์ฑํ๊ณ ์์ ํ ์ ์์ต๋๋ค.
์ฑ ์ ๋ํ ๋ณ์ (rating)์ ๊ธฐ๋กํ๊ณ ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.
์ฑ ์ ๋ ์ ์์์ผ(startedAt)๊ณผ ์๋ฃ์ผ(finishedAt)์ ๊ธฐ๋กํ์ฌ ๋ ์ ์ต๊ด์ ์ถ์ ํ ์ ์์ต๋๋ค.
์๋ฃ๋ ์ฑ ๋ค์ ์๋ณ ๋ชฉ๋ก์ ์บ๋ฆฐ๋ ํ์์ผ๋ก ์กฐํํ์ฌ ๋ ์ ํํฉ์ ํ์ ํ ์ ์์ต๋๋ค (GET /v1/book/calendar/finished)
ํน์ ๋ ์ ์ํ์ ํด๋นํ๋ ๋ด ์์ฌ ๋ชฉ๋ก์ ์กฐํํ ์ ์์ต๋๋ค (GET /v1/book/Library)
์ฑ ์ปฌ๋ ์ ๊ธฐ๋ฅ:
์ฌ์ฉ์ ์ ์ ์ด๋ฆ์ผ๋ก ์ฑ ์ปฌ๋ ์ ์ ์์ฑํ ์ ์์ต๋๋ค (POST /v1/collection/create)
์์ฑ๋ ์ปฌ๋ ์ ์ ์ฑ ์ ์ถ๊ฐํ๊ฑฐ๋ (POST /v1/collection/{name}/book/add) ์ปฌ๋ ์ ์์ ์ฑ ์ ์ ๊ฑฐํ ์ ์์ต๋๋ค (DELETE /v1/collection/{name}/book/remove)
์์ ์ด ๋ง๋ ๋ชจ๋ ์ปฌ๋ ์ ๋ชฉ๋ก๊ณผ ๊ฐ ์ปฌ๋ ์ ์ ํฌํจ๋ ์ฑ ๋ค์ ์ปค๋ฒ ์ด๋ฏธ์ง๋ฅผ ์กฐํํ ์ ์์ต๋๋ค (GET /v1/collection/list)
ํน์ ์ปฌ๋ ์ ์ ํฌํจ๋ ๋ชจ๋ ์ฑ ์ ์์ธ์ ๋ณด๋ฅผ ์กฐํํ ์ ์์ต๋๋ค (GET /v1/collection/{name})
ํน์ ์ปฌ๋ ์ ์ ์ญ์ ํ ์ ์์ต๋๋ค (DELETE /v1/collection/delete)
์๋ผ๋ API ์ฐ๋:
ISBN ๋๋ ๊ฒ์์ด(query)๋ฅผ ํตํด ์๋ผ๋ API์์ ๋์ ์ ๋ณด๋ฅผ ๊ฒ์ํ๊ณ ์์ธ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค.
์๋ผ๋ API๋ก๋ถํฐ ๊ฐ์ ธ์จ ๋์ ์ ๋ณด๋ Caffeine ๊ธฐ๋ฐ์ ๋น๋๊ธฐ ์บ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ต ์๋๋ฅผ ํฅ์์ํค๊ณ API ํธ์ถ์ ์ต์ํํฉ๋๋ค.
์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ์ธ๊ฐ:
OAuth2 Resource Server (JWT)๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ์ฉ์ ์ธ์ฆ ๋ฐ ์ธ๊ฐ๋ฅผ ์ฒ๋ฆฌํฉ๋๋ค. email ํด๋ ์์ ๊ธฐ๋ฐ์ผ๋ก ์ฌ์ฉ์๋ฅผ ์๋ณํฉ๋๋ค.
@UserCheckAndSave ์ด๋ ธํ ์ด์ ๊ณผ AOP(EmailUserValidationAspect)๋ฅผ ํตํด ์๋ก์ด ์ฌ์ฉ์์ ๊ฒฝ์ฐ ์๋์ผ๋ก ์์คํ ์ ๋ฑ๋กํฉ๋๋ค.
๐ ๊ฐ์ ์ฌํญ (Improvements)
์์คํ ์ํคํ ์ฒ:
Spring Boot (Java 17+, Jakarta EE ์ฌ์ฉ) ๊ธฐ๋ฐ์ผ๋ก ๊ฒฌ๊ณ ํ๊ณ ํ์ฅ ๊ฐ๋ฅํ ๋ฐฑ์๋ ๊ตฌ์ถ
Spring Data JPA์ QueryDSL์ ํ์ฉํ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ ๊ทผ ๋ฐ ๋ณต์กํ ์ฟผ๋ฆฌ ๊ตฌํ
Caffeine ๊ธฐ๋ฐ์ ๋ก์ปฌ ์บ์ ์ ์ฉ (readingLogCache, statusCache, bookByIsbnCache, libraryCache, collectionListCache, collectionCache, finishedBookCalendarData)์ผ๋ก ๋ฐ๋ณต์ ์ธ ๋ฐ์ดํฐ ์กฐํ ์ฑ๋ฅ ์ต์ ํ
AOP (TraceAspect)๋ฅผ ํตํ ์๋น์ค ๋ฐ ๋ฆฌํฌ์งํ ๋ฆฌ ๋ฉ์๋ ๋ก๊น
์ ์ญ ์์ธ ์ฒ๋ฆฌ (CustomExceptionHandler)๋ฅผ ํตํด ์ผ๊ด๋ ์ค๋ฅ ์๋ต ์ ๊ณต
CQRS ํจํด ์ ์ฉ์ ์ํ Command ๋ฐ Handler ์ธํฐํ์ด์ค/ํด๋์ค ๋ถ๋ฆฌ (์: BookSaveCommand, BookSaveHandler)
API ์๋ต ํต์ผ: ApiResponse ๋ํผ ํด๋์ค๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๊ด๋ API ์๋ต ๊ตฌ์กฐ ์ ๊ณต
CORS ์ค์ : ํน์ ์ค๋ฆฌ์ง(https://www.gomdolbook.kr)์ ๋ํ CORS ์์ฒญ ํ์ฉ
๐ ๏ธ ๋ฒ๊ทธ ์์ (Bug Fixes)
๐ ๊ธฐํ ๋ณ๊ฒฝ์ฌํญ (Other Changes)
Gradle ๋ฒ์ 8.11.1 ์ฌ์ฉ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํค๋ง ์ ์ (schema.sql)
๋จ์ ํ ์คํธ ๋ฐ ํตํฉ ํ ์คํธ ์ฝ๋ ์์ฑ (src/test/java ๊ฒฝ๋ก)
Last updated