본문 바로가기

전체 글141

[Key Word 개발기] maria db 대소문자 문제 우리 프로젝트에 mariadb를 사용했는데 로컬에서 어플리케이션을 실행해보니 갑자기 테이블이 없다고.. 오류가 나왔다... 뿐만 아니라 배포한 상태에서도 아래의 오류가 나왔다. Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table [테이블 명] 문제상황 그래서 찾아보니 리눅스 환경의 경우 db에서 대솝문자를 구분하게 설정하여 설치되어 있을 수도 있다고 한다. 처음 들어보는 이야기다... 그냥 항상 잘되서 아무 문제 없을 줄 알았는데... 그래서 다음 명령어를 통해 대소문자를 구분하는 지 확인 하였다 show variables like 'lower_case_table_name'; Valu.. 2024. 1. 25.
[Key Word 개발기] 스프링 이벤트 적용하기 갑자기 배포를 해야해서 이 기능은 적용한지 좀 오래됬는데 지금에서야 쓰는 나... 스프링 이벤트..?? 협업프로젝트를 진행하면서 S3를 이용해서 프로필 이미지를 저장하고, 삭제, 수정하는 기능을 도입했다. 이미지 삭제의 경우 수정할때 사용하는데 과연 삭제와 수정이 같은 트랜젝션안에 있어야하는 가에 대해 고민하게되었다. 내 생각의 경우 다른 트랜젝션이라고 생각했다. 그 이유는 s3에서 이미지 삭제 실패했다고 해서 핵심 로직에 큰 영향을 주지 않기 때문이다. 이미지 수정에만 성공하면 s3쪽에 이미지가 저장되고 db의 내용도 잘 변경된다. 그렇다면 이미지 삭제에 에러가 났다고 롤백하는게 좋은 방향일까?? 라고 질문을 던졌을때 좋은 방향은 아닌것같았다. 그래서 도입하게된 스프링 이벤트! 스프링 이벤트를 도입하게.. 2024. 1. 21.
2023-01-21 일주일 회고록 협업프로젝트가 마무리... 이번주 프론트분들이 백엔드 서버와 연동테스트 중이시다. 다행히 큰 오류 없이 진행중이다. 다음주면 협업프로젝트 마무리다.. 빠르게 한달 지나간 느낌... 협업 하면서 느낀 거는 사실 코드 짜는 것보다는 얘기하는 시간이 더 많다는 것이다. 물론 기획까지 우리가 하기에 그런 걸 수도 있지만 에러가 나면 같이 해결하고자하고 궁금한 부분이 생기면 또 모이니... 진짜 일주일에 5번은 온라인상에서 항상 만났던 것같다. 배포는 해도해도 수정할께 많구나 처음 배포를 한 거다보니 그저 블로그를 따라하고 이해하는 수준까지만 했지 조금 응용을 하지 않았다. 근데 하다 보니 yml관리도 번거로운 부분이 많았고, 에러로그도 ec2까지 들어가야하는 부분이 번거로웠고... 이렇게 번거롭다는 느낌이 들때.. 2024. 1. 21.
[Key Word 개발기] 젠킨스 파이프라인 스크립트 형상관리 현재 파이프라인 스크립트를 젠킨스 쪽에서 수정하고 배포하고 있다. 그러다보니 수정이 필요할때마다 젠킨스에 들어가야하고 변경사항에 대해서 매번 따로 기록해야하는 번거로움이 생겼다. 그래서 파이프라인도 형상관리를 할 수 없을까 고민하게되었다. 젠킨스 형상관리 젠킨스쪽에서 구성에서 가면 pipeline script scm이라는 부분이 있다. 여기서 scm이란?? GIT처럼 변경사항을 추적하고 통제하는 것을 말한다. 젠킨스는 pipeline script scm을 통해 파이프라인 스크립트를 형상관리를 지원하고 있었다. 형상관리를 통해 젠킨스 서버와 독립적으로 깃에서 파이프라인 스크립트를 관리할 수 잇었다. 따라서 스크립트에 문제가 발생한다면 이전 스크립트를 사용할 수 있게 할 수 있다. 깃 레포지토리 파이프라인 .. 2024. 1. 21.
[Key Word 개발기] Git submodule + 배포 적용기 앞서 submodule에 대해서 간단하게 설명하였다. 그래서 프로젝트에 적용한 과정과 만났던 에러들을 기록하고자 한다. 서브모듈 레포를 만들었다는 가정하에 진행한다. git submodule 연결 일단 git submodule 적용할 레포에서 터미널을 킨다. git submodule add -b {서브모듈 브랜치} {서브모듈 git url} src/main/resources/config src/main/resources/config의 경우 슈퍼 레포에서 어느 디렉토리에 등록할지 정하는 것이다. 우리 팀의 경우 resources폴더안에 config라는 폴더로 등록하기로 하였다. (config 폴더의 경우 미리 생성하지 않아도 저 명령어를 통해 폴더가 생서되면 서브모듈이 등록된다) 이후 잘 적용되었다면 .g.. 2024. 1. 21.
[Key Word 개발기] ec2 스프링부트 에러로그 slack으로 전송 우리 팀의 경우 ec2에 배포했는데 로그관련해서는 이렇게 설정해놨다. (일부분만 보여드린겁니다!) LOG_DIR=/home/ubuntu/logs LOG_FILE=$LOG_DIR/keyword.log # 로그 디렉토리 생성 (없는 경우) mkdir -p $LOG_DIR echo "🌈 SpringBoot 애플리케이션을 실행합니다" JAR_NAME=$(ls | grep .jar | head -n 1) sudo -E nohup java -jar -Dserver.port=8080 /home/ubuntu/$JAR_NAME >> $LOG_FILE 2>&1 & 스크립트가 실행될때 logs폴더안에 keyword.log안에 쌓이도록 해놨다. 그러다보니 문제점이... 첫번째 에러로그를 일일히 찾아야하는 점... 마치 인텔리.. 2024. 1. 20.
728x90