상용 DB 마이그레이션 경험기(@Transactional 내부에서 예외 잡기?)
문제상황과 해결방법 운영환경에서 사용되고 있던 레거시 테이블의 데이터를 마이그레이션 하면서 발생한 경험을 정리하고자 한다. 운영환경에서 타겟 테이블의 character set 이 euckr 이고 application은 utf-8을 사용하고 있는 상황이었다. 타겟 테이블에 데이터를 업데이트 해야 하는 상황에서 euc-kr 과 utf-8 인코딩으로 ...
문제상황과 해결방법 운영환경에서 사용되고 있던 레거시 테이블의 데이터를 마이그레이션 하면서 발생한 경험을 정리하고자 한다. 운영환경에서 타겟 테이블의 character set 이 euckr 이고 application은 utf-8을 사용하고 있는 상황이었다. 타겟 테이블에 데이터를 업데이트 해야 하는 상황에서 euc-kr 과 utf-8 인코딩으로 ...
서론 이번에 웹서버의 DB를 mssql에서 postgresql로 이관을 해야 할 필요가 있어서, flyway 또한도 같이 이관하기 위해 의존성을 바꾸는 작업을 진행하였다. org.flywaydb:flyway-sqlserver 를 단순히 postgresql 로만 바꾸면 되겠지 라는 생각에 금방 하겠지 싶었는데, Flyway 문서에 나와있는 org.f...
OOM 에러 발생 문제상황 api 중 하나가, 로그성 테이블의 데이터를 읽어와서 엑셀파일(byte array)을 만들어서 반환해주는 기능을 갖고 있었다. 처음에는 요구사항이 생겨서 큰 생각없이 빨리 만들어주었던 api 인데, 이 api 로 인해서 OutOfMemoryError : Java Heap Space 를 맞이하게 되었다. 해당 api의 코드를...
앱 개발 방식 스마트폰 앱은 크게 네이티브, 하이브리드, 크로스 플랫폼 방식으로 개발된다. 사실상 스마트폰 운영체제는 안드로이드와 iOS로 양분되어 있는데 Flutter는 두 운영체제에서 모두 돌아가는 앱을 한번에 구현 가능하다. 네이티브 방식 : 안드로이드나 ios 같은 플랫폼 자체에서 제공하는 개발 환경으로 개발 안드로...
Spring MSSQL Test Container 도입기 이번에 여러 환경에 대해서 Jenkins를 이용하여 배포 파이프라인을 구성하면서 빌드를 하는 PC와 배포를 하는 PC가 달라지는 상황이 있었다. 그리고 그 빌드 PC에서는 여러 환경에 대한 배포의 빌드를 동시에 진행하게 되었는데 이 때, container로 띄워놓은 database를 동시...
Gradle Multi Project Build 구성하기 기본 개념 Plugin Plugin은 gradle에서 주요 개념인 Project에서 사용가능한 task를 더해줄 수 있는 개념 예를 들어 java 플러그인에는 java를 컴파일하는 compileJava task가 포함 또한, jar 파일을 생성해내는 bootJar task는 org....
요즘 공부 키워드 객체지향 설계 (오브젝트 책 정리) 클린 아키텍처 (클린 아키텍처, 만들면서 배우는 클린 아키텍처) SQLD 자격증 시험 운영체제, Java In Action, Kotlin in Action 이번주 공부한 내용 클린 아키텍처 스터디 완료 SQLD 자격증 시험 준비 읽은 책 럭키 드로우 ( 트레바리...
요즘 공부 키워드 객체지향 설계 (오브젝트 책 정리) 클린 아키텍처 (클린 아키텍처, 만들면서 배우는 클린 아키텍처) SQLD 자격증 시험 운영체제, Java In Action.. 도 해야 하는데.. 이번주 공부한 내용 만들면서 배우는 클린 아키텍처 4 ~ 7장 SQLD 자격증 시험 준비 ( 데이터 모델링의 이해 ) 읽...
이번주 공부한 내용 만들면서 배우는 클린 아키텍처 1 ~ 3장 클린 아키텍처 스터디 준비(23~26장) CSS 기본 강의
서론 역할, 책임, 협력에 이어서 객체지향 설계가 잘 되었는지를 검증해볼 수 있는 기준이 되는 응집도, 결합도, 캡슐화에 대해서 이번 글에서는 살펴본다. 응집도, 결합도, 캡슐화란 무엇인가? 응집도 : 하나의 기능에 대해 변경이 일어날 때 그 객체의 모든 부분이 유기적으로 다 같이 바뀐다면 응집도가 높은 것이고, 하나의 기능에 대해 변경이 일...