πŸ“Š Java-Service-Tree-Framework-Backend-Core ν”„λ‘œμ νŠΈ 뢄석 🎯 ν”„λ‘œμ νŠΈ κ°œμš” Java-Service-Tree-Framework-Backend-CoreλŠ” A-RMS(Requirements Management System)의 핡심 λ°±μ—”λ“œ μ„œλΉ„μŠ€λ‘œ, μš”κ΅¬μ‚¬ν•­ 관리, Jira 톡합, μ œν’ˆ/μ„œλΉ„μŠ€ 관리λ₯Ό μ€‘μ‹¬μœΌλ‘œ ν•˜λŠ” μ—”ν„°ν”„λΌμ΄μ¦ˆκΈ‰ λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€. μ£Όμš” νŠΉμ§• 트리 기반 μ•„ν‚€ν…μ²˜: λͺ¨λ“  도메인 데이터λ₯Ό 계측적 트리 ꡬ쑰둜 관리 Jira 톡합: Jira Cloud/Serverμ™€μ˜ μ™„μ „ν•œ μ–‘λ°©ν–₯ 동기화 λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜: Spring Cloud 기반 λΆ„μ‚° μ‹œμŠ€ν…œ μ „μžμ •λΆ€ ν”„λ ˆμž„μ›Œν¬ 톡합: ν•œκ΅­ 곡곡기관 ν‘œμ€€ μ€€μˆ˜ πŸ—οΈ μ•„ν‚€ν…μ²˜ 뢄석 1. 계측 ꡬ쑰 β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Presentation Layer β”‚ β”‚ β€’ REST Controllers β”‚ β”‚ β€’ DWR Remote Services β”‚ β”‚ β€’ Swagger API Documentation β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Business Logic Layer β”‚ β”‚ β€’ Tree Service Framework β”‚ β”‚ β€’ Domain Services β”‚ β”‚ β€’ Transaction Management β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Data Access Layer β”‚ β”‚ β€’ Spring Data JPA β”‚ β”‚ β€’ MyBatis (Complex Queries) β”‚ β”‚ β€’ Hibernate ORM β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ↓ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Infrastructure Layer β”‚ β”‚ β€’ MySQL Database β”‚ β”‚ β€’ Flyway Migration β”‚ β”‚ β€’ Config Server Integration β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ 2. 핡심 기술 μŠ€νƒ λΆ„λ₯˜κΈ°μˆ λ²„μ „μš©λ„LanguageJava11μ£Ό 개발 μ–Έμ–΄FrameworkSpring Boot2.3.12μ• ν”Œλ¦¬μΌ€μ΄μ…˜ ν”„λ ˆμž„μ›Œν¬CloudSpring CloudHoxton.SR9λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ 관리ORMHibernate5.6.15객체-관계 λ§€ν•‘ORMMyBatis2.3.1λ³΅μž‘ν•œ SQL 쿼리DatabaseMySQL8.0.32μ£Ό λ°μ΄ν„°λ² μ΄μŠ€MigrationFlyway6.4.4DB μŠ€ν‚€λ§ˆ 버전 관리BuildGradle6.9.1λΉŒλ“œ μžλ™ν™”ContainerDockerLatestμ»¨ν…Œμ΄λ„ˆν™” πŸ“¦ λͺ¨λ“ˆ ꡬ쑰 뢄석 1. μš”κ΅¬μ‚¬ν•­ 관리 λͺ¨λ“ˆ (Requirement) api/requirement/ β”œβ”€β”€ reqadd/ # μš”κ΅¬μ‚¬ν•­ μΆ”κ°€ β”œβ”€β”€ reqaddlog/ # μš”κ΅¬μ‚¬ν•­ 둜그 β”œβ”€β”€ reqadd_pure/ # 순수 μš”κ΅¬μ‚¬ν•­ 데이터 β”œβ”€β”€ reqadd_state_pure/ # μš”κ΅¬μ‚¬ν•­-μƒνƒœ 관계 β”œβ”€β”€ reqstate/ # μš”κ΅¬μ‚¬ν•­ μƒνƒœ 관리 β”œβ”€β”€ reqstate_category/ # μƒνƒœ μΉ΄ν…Œκ³ λ¦¬ β”œβ”€β”€ reqstatus/ # μš”κ΅¬μ‚¬ν•­ μ§„ν–‰ μƒνƒœ β”œβ”€β”€ reqstatus_calendar/ # μΊ˜λ¦°λ” λ·° β”œβ”€β”€ reqpriority/ # μš°μ„ μˆœμœ„ β”œβ”€β”€ reqdifficulty/ # λ‚œμ΄λ„ β”œβ”€β”€ reqreview/ # 리뷰 ν”„λ‘œμ„ΈμŠ€ β”œβ”€β”€ reqreviewcomment/ # 리뷰 μ½”λ©˜νŠΈ β”œβ”€β”€ reqcomment/ # 일반 μ½”λ©˜νŠΈ └── *log/ # λ³€κ²½ 이λ ₯ 좔적 νŠΉμ§•: μ™„μ „ν•œ μš”κ΅¬μ‚¬ν•­ 생λͺ…μ£ΌκΈ° 관리 이λ ₯ 좔적(Audit) κΈ°λŠ₯ λ‚΄μž₯ Tree ꡬ쑰둜 계측적 μš”κ΅¬μ‚¬ν•­ ν‘œν˜„ μƒνƒœ μ „ν™˜ μ›Œν¬ν”Œλ‘œμš° 지원 2. Jira 톡합 λͺ¨λ“ˆ (Jira Integration) api/jira/ β”œβ”€β”€ jiraserver/ # Jira μ„œλ²„ μ„€μ • β”œβ”€β”€ jiraserver_pure/ # 순수 μ„œλ²„ 데이터 β”œβ”€β”€ jiraserver_project_pure/ # μ„œλ²„-ν”„λ‘œμ νŠΈ 관계 β”œβ”€β”€ jiraproject/ # Jira ν”„λ‘œμ νŠΈ λ§€ν•‘ β”œβ”€β”€ jiraproject_pure/ # 순수 ν”„λ‘œμ νŠΈ 데이터 β”œβ”€β”€ jiraproject_issuetype_pure/ # ν”„λ‘œμ νŠΈ-μ΄μŠˆνƒ€μž… 관계 β”œβ”€β”€ jiraissuetype/ # 이슈 νƒ€μž… β”œβ”€β”€ jiraissuestatus/ # 이슈 μƒνƒœ β”œβ”€β”€ jiraissuestatuscategorymap/ # μƒνƒœ-μΉ΄ν…Œκ³ λ¦¬ λ§€ν•‘ β”œβ”€β”€ jiraissuepriority/ # 이슈 μš°μ„ μˆœμœ„ β”œβ”€β”€ jiraissueresolution/ # 이슈 ν•΄κ²°μ±… └── *log/ # Jira 동기화 둜그 νŠΉμ§•: Jira Cloud/Server λͺ¨λ‘ 지원 메타데이터 μ™„μ „ 동기화 μ–‘λ°©ν–₯ 데이터 λ§€ν•‘ μ‹€μ‹œκ°„ 동기화 둜그 3. μ œν’ˆ/μ„œλΉ„μŠ€ 관리 λͺ¨λ“ˆ (Product Service) api/product_service/ β”œβ”€β”€ pdservice/ # μ œν’ˆ μ„œλΉ„μŠ€ λ§ˆμŠ€ν„° β”œβ”€β”€ pdservicelog/ # μ œν’ˆ λ³€κ²½ 이λ ₯ β”œβ”€β”€ pdserviceversion/ # μ œν’ˆ 버전 관리 β”œβ”€β”€ pdserviceversionlog/ # 버전 λ³€κ²½ 이λ ₯ β”œβ”€β”€ pdservice_detail/ # μ œν’ˆ 상세 정보 └── pdservice_pure/ # 순수 μ œν’ˆ 데이터 νŠΉμ§•: μ œν’ˆ 계측 ꡬ쑰(Tree) 버전별 μš”κ΅¬μ‚¬ν•­ λ§€ν•‘ 릴리즈 κ³„νš 관리 μ œν’ˆ λ‘œλ“œλ§΅ 지원 4. 뢄석 μ—”μ§„ (Analysis) api/analysis/ β”œβ”€β”€ cost/ # λΉ„μš© 뢄석 (μ˜ˆμ‚°, ROI) β”œβ”€β”€ time/ # μ‹œκ°„ 뢄석 (일정 μ€€μˆ˜μœ¨, μ§€μ—°) β”œβ”€β”€ scope/ # λ²”μœ„ 뢄석 (κΈ°λŠ₯ λ²”μœ„, λ³€κ²½) β”œβ”€β”€ resource/ # λ¦¬μ†ŒμŠ€ 뢄석 (인λ ₯, 업무 λΆ€ν•˜) └── topmenu/ # 뢄석 메뉴 관리 νŠΉμ§•: 4κ°€μ§€ 뢄석 차원 제곡 μ‹€μ‹œκ°„ λ©”νŠΈλ¦­ 계산 차트 데이터 생성 λŒ€μ‹œλ³΄λ“œ 연동 5. λ¦¬ν¬νŒ… & λŒ€μ‹œλ³΄λ“œ api/report/ β”œβ”€β”€ fulldata/ # Full Data Report (Excel/PDF) └── mail/ # 메일 리포트 (μžλ™ λ°œμ†‘) api/dashboard/ # μ‹€μ‹œκ°„ λŒ€μ‹œλ³΄λ“œ μœ„μ ― 6. λ°±μ˜€ν”ΌμŠ€ & μœ ν‹Έλ¦¬ν‹° api/backoffice/ β”œβ”€β”€ config/ # μ‹œμŠ€ν…œ μ„€μ • β”œβ”€β”€ information/ # μ‹œμŠ€ν…œ 정보 └── system/ # μ‹œμŠ€ν…œ 관리 api/util/ β”œβ”€β”€ aes/ # μ•”ν˜Έν™”/λ³΅ν˜Έν™” β”œβ”€β”€ aspect/ # AOP 곡톡 관심사 β”œβ”€β”€ communicate/ # 타 μ„œλΉ„μŠ€ 톡신 β”œβ”€β”€ dynamicdbmaker/ # 동적 DB 생성 β”œβ”€β”€ dynamicscheduler/ # 동적 μŠ€μΌ€μ€„λŸ¬ β”œβ”€β”€ filerepository/ # 파일 μ €μž₯μ†Œ β”œβ”€β”€ slack/ # Slack μ•Œλ¦Ό └── model/ # 곡톡 λͺ¨λΈ πŸ”§ μ£Όμš” μ„€μ • 및 인프라 1. Spring Cloud 톡합 java// Config Server Client spring.cloud.config.uri=http://global-config:33133 // OpenFeign (MSA κ°„ 톡신) @EnableFeignClients // Sleuth + Zipkin (λΆ„μ‚° νŠΈλ ˆμ΄μ‹±) spring.cloud.sleuth.enabled=true spring.zipkin.base-url=http://zipkin:9411 2. λ³΄μ•ˆ μ„€μ • java// Keycloak 톡합 인증/인가 keycloak.auth-server-url=https://keycloak.example.com/auth keycloak.realm=arms-realm keycloak.resource=backend-core // Spring Security @EnableWebSecurity ``` ### 3. λ°μ΄ν„°λ² μ΄μŠ€ μ„€μ • **이쀑 ORM μ „λž΅:** - **JPA/Hibernate**: λ‹¨μˆœ CRUD, μ—”ν‹°ν‹° 관리 - **MyBatis**: λ³΅μž‘ν•œ 쑰인, 톡계 쿼리, μ„±λŠ₯ μ΅œμ ν™” **Flyway λ§ˆμ΄κ·Έλ ˆμ΄μ…˜:** ``` resources/com/arms/db/ β”œβ”€β”€ V1__init_aRMS.sql β”œβ”€β”€ V2__init_aRMS.sql β”œβ”€β”€ ... └── V38__init_aRMS.sql 4. λ©”μ‹œμ§• & μ•Œλ¦Ό java// Kafka (이벀트 슀트리밍) spring.kafka.bootstrap-servers=localhost:9092 // Slack (μ•Œλ¦Ό) slack.api.token=xoxb-... slack.channel=#arms-notifications // Email (λ¦¬ν¬νŒ…) spring.mail.host=smtp.gmail.com 5. λͺ¨λ‹ˆν„°λ§ & κ΄€μ°°μ„± java// Actuator (ν—¬μŠ€μ²΄ν¬, λ©”νŠΈλ¦­) management.endpoints.web.exposure.include=* // Micrometer (λ©”νŠΈλ¦­ μˆ˜μ§‘) management.metrics.export.prometheus.enabled=true // Sleuth + Zipkin (λΆ„μ‚° νŠΈλ ˆμ΄μ‹±) spring.sleuth.sampler.probability=1.0 🎨 λ””μžμΈ νŒ¨ν„΄ 및 μ•„ν‚€ν…μ²˜ νŠΉμ§• 1. Tree Service Framework 핡심 κ°œλ…: ν”„λ‘œμ νŠΈμ˜ λͺ¨λ“  도메인 객체λ₯Ό 트리 ꡬ쑰둜 κ΄€λ¦¬ν•˜λŠ” λ…μžμ μΈ ν”„λ ˆμž„μ›Œν¬ java// μ˜ˆμ‹œ ꡬ쑰 public interface TreeService { T addNode(T node); T getNode(Long id); List getChildren(Long parentId); List getChildrenRecursive(Long nodeId); void moveNode(Long nodeId, Long newParentId); void deleteNode(Long id); } ``` **μž₯점:** - 계측적 λ°μ΄ν„°μ˜ μžμ—°μŠ€λŸ¬μš΄ ν‘œν˜„ - λΆ€λͺ¨-μžμ‹ 관계 λͺ…ν™•ν™” - 경둜 탐색 용이 - λ“œλž˜κ·Έ μ•€ λ“œλ‘­ UI κ΅¬ν˜„ κ°„νŽΈ ### 2. 둜그 ν…Œμ΄λΈ” νŒ¨ν„΄ λͺ¨λ“  μ£Όμš” 엔티티에 λŒ€ν•΄ `*log` ν…Œμ΄λΈ”μ„ μƒμ„±ν•˜μ—¬ λ³€κ²½ 이λ ₯ 좔적: ``` reqadd β†’ reqaddlog jiraserver β†’ jiraserverlog pdservice β†’ pdservicelog ``` **이점:** - μ™„μ „ν•œ 감사 좔적(Audit Trail) - λ³€κ²½ 이λ ₯ 쑰회 - 볡원 κ°€λŠ₯μ„± - κ·œμ • μ€€μˆ˜(Compliance) ### 3. Pure 데이터 νŒ¨ν„΄ `*_pure` 접미사λ₯Ό κ°€μ§„ ν…Œμ΄λΈ”λ‘œ μ™ΈλΆ€ μ‹œμŠ€ν…œ(Jira λ“±)의 원본 데이터 μ €μž₯: ``` jiraserver_pure jiraproject_pure reqadd_pure ``` **λͺ©μ :** - 원본 데이터 보쑴 - λ§€ν•‘ 데이터와 뢄리 - 동기화 검증 - 데이터 무결성 ### 4. μ „μžμ •λΆ€ ν”„λ ˆμž„μ›Œν¬ 톡합 ``` egovframework/ β”œβ”€β”€ spring/ β”‚ β”œβ”€β”€ context-common.xml β”‚ β”œβ”€β”€ context-hibernate.xml β”‚ └── context-jdbc.xml β”œβ”€β”€ mybatis/ β”œβ”€β”€ message/ └── validator/ ν•œκ΅­ 곡곡기관 ν‘œμ€€ μ€€μˆ˜λ‘œ μ •λΆ€ ν”„λ‘œμ νŠΈ 적용 κ°€λŠ₯ πŸš€ 배포 및 운영 Docker 배포 bash# 이미지 λΉŒλ“œ ./gradlew docker # μ»¨ν…Œμ΄λ„ˆ μ‹€ν–‰ docker run -d \ -p 31313:31313 \ --name backend-core \ -e SPRING_PROFILES_ACTIVE=dev \ 313.co.kr:5550/313devgrp/java-service-tree-framework-backend-core:25.11.x Maven Repository 배포 bash# Nexus Repository에 배포 ./gradlew publish ν™˜κ²½λ³„ μ„€μ • 개발(dev): bootstrap-dev.yml μŠ€ν…Œμ΄μ§•(stg): bootstrap-stg.yml 운영(live): bootstrap-live.yml πŸ“Š μ½”λ“œ ν’ˆμ§ˆ 및 μ˜μ‘΄μ„± μ˜μ‘΄μ„± 톡계 총 μ˜μ‘΄μ„±: μ•½ 250개 라이브러리 Spring κ΄€λ ¨: 60+ 데이터 μ•‘μ„ΈμŠ€: 20+ λ³΄μ•ˆ: 10+ μœ ν‹Έλ¦¬ν‹°: 30+ ν…ŒμŠ€νŠΈ: 15+ μ£Όμš” μ˜μ‘΄μ„± μΉ΄ν…Œκ³ λ¦¬ Spring Ecosystem (60+) Spring Boot, Cloud, Data, Security, Kafka 데이터 처리 (20+) Hibernate, MyBatis, MySQL, Flyway 톡합 & 톡신 (15+) OpenFeign, Kafka, Slack API, Selenium λ¬Έμ„œ & λ¦¬ν¬νŒ… (10+) Apache POI, Thymeleaf, Swagger λ³΄μ•ˆ & 인증 (10+) Keycloak, Spring Security, Bouncy Castle πŸ’‘ 핡심 강점 1. ν™•μž₯ κ°€λŠ₯ν•œ 트리 μ•„ν‚€ν…μ²˜ 계측적 데이터λ₯Ό μžμ—°μŠ€λŸ½κ²Œ ν‘œν˜„ λ³΅μž‘ν•œ μš”κ΅¬μ‚¬ν•­ ꡬ쑰화 κ°€λŠ₯ μœ μ—°ν•œ 데이터 λͺ¨λΈλ§ 2. μ™„λ²½ν•œ Jira 톡합 Cloud/Server λͺ¨λ‘ 지원 μ–‘λ°©ν–₯ 동기화 메타데이터 μ™„μ „ λ§€ν•‘ 3. μ—”ν„°ν”„λΌμ΄μ¦ˆκΈ‰ κΈ°λŠ₯ 뢄석 μ—”μ§„ (λΉ„μš©, μ‹œκ°„, λ²”μœ„, λ¦¬μ†ŒμŠ€) λ¦¬ν¬νŒ… μ‹œμŠ€ν…œ λŒ€μ‹œλ³΄λ“œ λ°±μ˜€ν”ΌμŠ€ 4. λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜ Spring Cloud 기반 Config Server 톡합 λΆ„μ‚° νŠΈλ ˆμ΄μ‹± 이벀트 기반 톡신 5. 운영 μ•ˆμ •μ„± Flyway λ°μ΄ν„°λ² μ΄μŠ€ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ μ™„μ „ν•œ 이λ ₯ 좔적 ν—¬μŠ€μ²΄ν¬ 및 λͺ¨λ‹ˆν„°λ§ Docker μ»¨ν…Œμ΄λ„ˆν™” 6. ν•œκ΅­ ν‘œμ€€ μ€€μˆ˜ μ „μžμ •λΆ€ ν”„λ ˆμž„μ›Œν¬ 톡합 곡곡기관 적용 κ°€λŠ₯ πŸ” κ°œμ„  μ œμ•ˆ 사항 1. ν…ŒμŠ€νŠΈ 컀버리지 λ‹¨μœ„ ν…ŒμŠ€νŠΈ ν™•λŒ€ ν•„μš” 톡합 ν…ŒμŠ€νŠΈ κ°•ν™” E2E ν…ŒμŠ€νŠΈ μΆ”κ°€ 2. λ¬Έμ„œν™” API λ¬Έμ„œ μžλ™ν™” (Swagger ν™œμš©) μ•„ν‚€ν…μ²˜ λ‹€μ΄μ–΄κ·Έλž¨ μΆ”κ°€ 개발자 κ°€μ΄λ“œ 보완 3. μ„±λŠ₯ μ΅œμ ν™” 쿼리 μ΅œμ ν™” 캐싱 μ „λž΅ κ°œμ„  비동기 처리 ν™•λŒ€ 4. λ³΄μ•ˆ κ°•ν™” API 인증/인가 κ°•ν™” 민감 데이터 μ•”ν˜Έν™” λ³΄μ•ˆ μŠ€μΊ” μžλ™ν™” 5. λͺ¨λ‹ˆν„°λ§ 둜그 집쀑화 (ELK Stack) APM 도ꡬ 톡합 μ•Œλ¦Ό κ·œμΉ™ μ •μ˜ πŸ“š κ²°λ‘  Java-Service-Tree-Framework-Backend-CoreλŠ” μš”κ΅¬μ‚¬ν•­ 관리 μ‹œμŠ€ν…œμ˜ 핡심 λ°±μ—”λ“œλ‘œμ„œ λ‹€μŒκ³Ό 같은 νŠΉμ§•μ„ κ°€μ§„ μ„±μˆ™ν•œ μ—”ν„°ν”„λΌμ΄μ¦ˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μž…λ‹ˆλ‹€: βœ… μ•„ν‚€ν…μ²˜: 트리 기반의 독창적인 μ„€κ³„λ‘œ 계측적 데이터 관리에 μ΅œμ ν™” βœ… 톡합성: Jira, Kafka, Slack λ“± μ£Όμš” λ„κ΅¬λ“€κ³Όμ˜ μ™„λ²½ν•œ 톡합 βœ… ν™•μž₯μ„±: λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€ μ•„ν‚€ν…μ²˜λ‘œ μˆ˜ν‰ ν™•μž₯ κ°€λŠ₯ βœ… μ•ˆμ •μ„±: Flyway λ§ˆμ΄κ·Έλ ˆμ΄μ…˜, 이λ ₯ 좔적, λͺ¨λ‹ˆν„°λ§ λ“± 운영 μ•ˆμ •μ„± 확보 βœ… ν‘œμ€€ μ€€μˆ˜: μ „μžμ •λΆ€ ν”„λ ˆμž„μ›Œν¬ ν†΅ν•©μœΌλ‘œ 곡곡기관 적용 κ°€λŠ₯ ν˜„μž¬ 버전 25.11.xλŠ” ν”„λ‘œλ•μ…˜ λ ˆλ”” μƒνƒœμ΄λ©°, 지속적인 κ°œμ„ κ³Ό κΈ°λŠ₯ μΆ”κ°€κ°€ 이루어지고 μžˆλŠ” ν™œλ°œν•œ ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€.