전체 글

imSoo TecBlog
problem 저번 글에 addBatch에 대한 글을 적었는데 기초에 대한 정리 글이 없어서 적어본다. https://soobysu.tistory.com/131 [Spring Batch] addBatch로 다량 쿼리문 한번에 실행 (bulk insert) 결과 10만건 데이터 > JPA 27분 , addBatch 28초 Problem 엔터티 indexes 를 설정하고 검색최적화를 위해 더미데이터를 DB에 저장 하려고 하는데 10만건의 데이터를 넣는데 굉장히 많은 시간이 걸렸다. 어떻 soobysu.tistory.com solution 스프링 배치 구성 잡 런처 -> 잡 실행 시키는 주체 잡 -> 작업의 단위 ( 한개이상의 스텝으로 구성 되어있다 ) 스텝 -> 행위 ( 데이터 읽기 read , 데이터 작업..
problem inMemoryDatabaseShutdownExecutor / dataSource defined 멀티모듈 빌드 과정에서 dataSource 를 찾지 못하는 에러가 나왔다.. solution 검색을 해보니 DB 셋팅을 해주라는 답변들이 나왔다. #블로그 답변들.. spring.datasource.driverClassName=org.h2.Driver --- runtimeOnly 'com.h2database:h2' Boot 모듈에 db 의존성을 추가해주어야 하나라는 생각이 문뜩 들어서 추가해주었다. dependencies { implementation(project(":takeItEasy-presentation")) implementation(project(":takeItEasy-aop")) ..
problem 공통적으로 package 쪽에 오류와 로컬 IDE에서는 문제없이 빌드가 됐지만 젠킨스에서만 빌드가 안되는게 라이브러리 참조를 못하고 있는줄 알았다. solution 필자는 멀티모듈 구성으로 각 모듈에 필요한 의존성만 넣어주다보니 부트모듈에 spring-web 의존성을 추가해주지 않아서 발생한 것이다. 그런데 이번에 쓸 내용들은 젠킨스 빌드에 관련된 이야기를 할 것이다. 젠킨스는 기본적으로 workspace에 계속 같은 이름으로 된 작업들을 덮어씌운다. = 불필요한 찌꺼기가 남아서 나중엔 꼬인다.. ( 경험담 ) stages { stage('Clean Workspace') { steps { script { // Jenkins 워크스페이스 디렉토리 지정 def workspaceDir = "$..
problem "could not execute statement; SQL [n/a]" 라는 오류가 났다. SQL구문 오류라는데 로그를 보니 Incorrect string value: ‘\xEC\x98\x81\xEC\x88\x98...’ for column `db명`.`테이블명`.`컬럼명` at row 1 대충 밸류 뒤에 저거 보니 인코딩 오류구나 싶어서 구글링ㄱㄱ solution 우선 테이블 정보를 한번 찾아봤다 SHOW CREATE DATABASE your_database_name; //결과 CREATE DATABASE `디비명` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */ CHARACTER SET latin1 COLLATE ..
problem rds의 mysql 설정 정보를 바꾸려고 접속하려는데 부딪혔 난관에 대해서 정리해본다 solution 필자는 aws Linux 2023 버전을 사용했다 #ec2 버전 Linux버전 찾기 cat /etc/os-release Aws Linux는 yum install 로 하면 못 찾는다. sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm sudo dnf install mysql-community-server GPG 키 오류 .. GPG키 연결 sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 sudo yum update 다시 설치..
prblem version 정보를 환경변수로 사용 할 수 없을까 ? 따로 관리 하고 싶었다. //build.gradle.kts plugins { id("org.springframework.boot") version "3.1.0" apply false id("io.spring.dependency-management") version "1.1.0" kotlin("jvm") version "1.8.21" kotlin("plugin.spring") version "1.8.21" apply false } solution //gradle.properties ###application version applicationVersion = 0.0.1 ###kotlin version kotlinVersion=1.8.21 ..
Problem 레이어드아키텍처 나 헥사고날아키텍처.. 등등 에서 모듈을 나누는 경우가 많다. 모듈을 분리 하는 이유는 재사용성 , 계층간 관심사 분리 , 추상화 등이 있다. 무엇보다 이번에 계획하게 된 이유는 컨트롤러를 코틀린으로 작성하고 JPA를 직접적으로 사용하는 Service계층은 자바로 작 성하고 싶었다. 코틀린은 Null에 대한 안정성과 자바코드보다 훨신 더 간결함을 가지고 있는 언어이다. 위 장점은 요청을 받는 Controller 단에 최적의 언어라고 생각했다. 하지만 코틀린은 아직 Jpa 와 100프로는 어울리지 않는 언어라고 한다. https://tech.inflab.com/20240110-java-and-kotlin/ Spring Boot & JPA에서 Java와 Kotlin을 함께 사용..
problemRead 기능은 요청의 90프로를 차치 할 만큼 굉장히 중요하다또한, 일반적인 웹서비스의 기능은 서비스가 복잡해질수록 다양한 요구가 생기며,변경 역할과 조회 역할은 다른 성격을 띄게 되어 분리의 필요성이 커진다. ( 관심사 분리 )조회 서버의 스케일 업/아웃 하여 조회성능을 높일 수도 있다.그만큼 서비스의 복잡도도 엄청나게 늘어나고 유지보수 비용도 늘어난다.복잡도는 공부로 유지보수 비용은 몸빵으로 극복하면 되지 않는가 !solution이 글은 Redis를 통한 조회성능을 올리는 것을 목표로 한다.조회 서버와 DB를 분리하여 조회서버에서 redis의 데이터를 영속화 하여 관리하는 것으로 변경 해 보려고 한다.DB 를 분리하고 최종적으로 Read서버를 분리하는 모습으로 변화 된다.변경 전파 ( ..
imSoo
sudoSoooooo