Springboot 3.x 와 Flyway를 쓰며 테스트/운영 DB 서버 밴더 다르게 사용하는 법
·
Programming/spring&java system
미리 결론테스트와 운영 애플리케이션의 DB 종류를 다르게 쓰고 있어서 마이그레이션 쿼리문에 구문 오류 에러가 뜬다면설정 파일에 placeholders 기능과 migration 폴더 세분화를 통해 DB별 쿼리 파일을 만들어 분기해주어 해결한다!신기술은 ChatGPT에 물어보지 말고 동작원리를 최대한 이해하고, stackOverFlow나 공식문서를 확인하자!문제상황제가 하고 있는 프로젝트는 테스트와 운영에서 다른 종류의 DB를 사용하고 있습니다.테스트모드에선 Springboot가 자동으로 생성해주는 H2를 사용하고,운영모드에선 MySql을 사용합니다.그러다보니, 마이그레이션에 사용되는 쿼리문이 특정 Database 사투리에 종속되어 다른 한 쪽에선 구문 오류가 발생했습니다.처음에는 최대한 공용으로 쓸 수 있..
[error] Apache POI NoClassDefFoundError와 AWS EC2 Alpine Linux
·
Programming/spring&java system
abcdedu 시스템에 데이터를 엑셀로 추출하는 기능을 추가했습니다.Apache POI 모듈을 사용하여 구현했는데 분명 로컬에서는 잘 실행 되었던 엑셀 추출 기능이 aws 서버를 사용한 개발 환경에 배포가 되니, 동작하지 않았습니다.이게 그 유명한 "아앗~~~ 분명 내 컴퓨터에서는 됐는데?" 현상인기 하고 곤란함에 머리를 감싸쥐었습니다. 그러곤 로그를 확인해보았습니다.java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11FontManager] with root cause로그에서 Font라는 단어가 힌트를 주었습니다. 데이터를 파일로 추출하는 기능이었기에 해당 파일을 만드는데 사용될 폰트 클래스가 필요한데 그것을 찾을 수 없는 것이라고..
Flyway 도입 후기: 장점, 문제점, 해결 과정
·
Programming/spring&java system
부제 : DB Flyway와 SpringBoot를 쓰는 환경에서 Test DB(H2), 운영 DB(MySQL) 구문 오류 해결 과정목차Flyway란?실제로 사용하고 느낀 Flyway 장점겪은 오류와 해결방법결론저는 운영 중인 웹 시스템 abcdedu에 flyway기능을 도입하였습니다.그래서 오늘은 해당 기능의 도입을 통해 얻은 장점과 맞이한 문제점에 대해 얘기해보고 그 해결과정을 설명하려고 합니다.1. Flyway란?데이터베이스 마이그레이션 툴입니다. 스키마와 데이터의 버전을 관리하는데 사용됩니다.참고) 우리가 흔히 알고 있던 데이터 마이그레이션과 혼동될 수 있습니다.보통 데이터 마이그레이션은 데이터를 한 시스템에서 다른 시스템으로 이전하는 것 을 말하지만이 글에서는 관계형 데이터베이스 스키마 관리하는 ..
[DB] 설문 도메인을 구현하기 위한 ERD 와 JPA mapping 정의 (1)
·
Programming/spring&java system
요즘 저는 abcdedu 라는 교육 플랫폼 웹 서비스를 개발하며 정신 없는 나날을 보내고 있습니다. 여느 기능 보다 수업을 듣고 나서 남기는 설문 기능을 구현하며 많은 고민을 했습니다. 특히 DB와 관련된 부분을 이야기하고자 합니다. 1.  설문 기능은 어떻게 구성될까요?설문 기능은 설문, 질문, 질문의 선택지, 응답으로 이루어진 거대한 개념이라고 생각했습니다. 각 기능을 분리해서 생각하여 테이블 또한 각각 구성하기로 했습니다. 개별적으로 설계함으로써 관리자가 언제든 설문에 대한 내용을 유연하게 수정할 수 있도록 각각의 기능을 분리하고자 했습니다. 기능 흐름)'2024 강의 만족도 조사' 라는 하나의 설문을 만듭니다.해당 설문은 여러 개의 질문으로 구성됩니다.질문은 설문 id를 외래키로 가져 어느 설문에..