본문 바로가기

전체글351

AWS S3를 이용한 Jenkins 마이그레이션 기존 Jenkins 환경을 다른 서버로 마이그레이션을 해야할 때가 있습니다. 일반적으로는 잘 없지만, 계열사 혹은 서비스 분리로 AWS 환경 자체가 변경될 경우가 있습니다. 그럴때를 대비해서 EC2에 설치된 Jenkins를 다른 EC2로 마이그레이션 하는 방법을 진행해보겠습니다. 전체 구조는 아래와 같습니다.Jenkins는 모든 설정과 Job 내용이 파일로 관리가 됩니다. 그래서 Jenkins가 설치된 디렉토리 전체를 타 서버로 이관만 하면 마이그레이션은 끝입니다. 그럼 하나씩 진행해보겠습니다. 1. 기존 서버 먼저 기존에 운영되던 Jenkins EC2 서버에서 root 계정으로 전환합니다. sudo su - root 안전하게 이관하기 위해 실행중인 Jenkins를 정지합니다. service jenkin.. 2020. 7. 9.
Spring Batch ItemWriter 성능 비교 대규모 데이터를 처리하는 Spring Batch 에서 배치 성능은 중요한 요소입니다. 배치 성능에 있어서 튜닝 요소는 크게 2가지로 정리 될 수 있습니다. Reader를 통한 데이터 조회 Writer를 통한 데이터 등록/수정 Reader의 경우엔 Select Query 튜닝을 통한 개선 이야기가 많이 공유되어있습니다. Querydsl을 통한 Paging, No Offset 조회 방법은 이전 포스팅 을 참고하시면 됩니다. 반면 Writer의 경우에는 Reader에 비해서는 공유된 내용이 많지 않습니다. 그래서 이번 시간에는 Spring Batch와 JPA를 사용하는 경우에 어떻게 개선할 수 있을지 실제 비교를 해가며 정리하였습니다. 모든 테스트는 아래 환경에서 동일하게 수행하였습니다. AWS RDS Aur.. 2020. 7. 8.
Spring Batch ItemReader에서 Reader DB 사용하기 (feat. AWS Aurora) 일반적으로 서비스가 커지게 되면 DB를 여러대로 늘리게 됩니다. 이때 가장 첫 번째로 고려하는 방법이 Replication 입니다. 즉, 1대의 마스터 DB와 여러대의 Slave DB를 두는 것이죠. 데이터의 변경은 모두 마스터 DB에서만 이루어지고, SlaveDB들은 이 변경사항을 실시간으로 수신 받고, 성능 이슈가 심한 조회 요청에 대해서 처리합니다. (일반적인 웹 서비스에서는 조회와 등록/수정 비율이 80%:20% 정도입니다) 위와 같은 전략에 대해서는 이미 많은 자료가 인터넷에 있으니 참고해보시면 됩니다. 신입 개발자분들은 강대명님의 슬라이드를 꼭 참고하셔서 보편적인 웹 서비스 확장 전략에 대해서 꼭 인지하고 계셔야 합니다. 이번 글에서는 이렇게 Replication 상태에서 Spring Batc.. 2020. 6. 15.
(2020) 1. 비전공자로 자바 백엔드 개발자 시작하기 저는 개인적으로 이런 이야기를 하는 것을 썩 좋아하진 않습니다. 어떤 사람의 커리어나, 그 사람의 현재 위치는 운이 굉장히 큰 영향을 끼쳤다고 믿기 때문입니다. 그 사람이 했던 방식, 했던 선택들을 그대로 한다고 해서 똑같은 결과물이 나온다는 보장이 없다고 생각합니다. 그래서 누군가의 상황을 듣고, "아! 그런 상황은 이렇게 이렇게 해보세요" 라고 조언할 수가 없습니다. 일단, 저도 모든 선택이 다 처음이여서요. 리셋버튼 누르면서 2~3회차 살아온게 아니라는거죠. 꽃보다 누나에서 윤여정 선생님과 이승기님의 이야기는 꼭 한번 보시면 좋습니다. 질문자분의 상황/성향/학습방법/습관 등 모든게 다 저와 똑같진 않겠죠? 모두가 똑같은 스탯을 가진 케릭터로 시작하여 똑같은 루트를 고르면 성장속도가 비슷한 게임처럼 .. 2020. 6. 1.
Get 요청시 LocalDate 필드에 2월 31일 올 경우 정상 처리 방법 (feat. @DateTimeFormat 제거하기) Spring Boot로 LocalDate를 Request Parameter로 받을 경우 예상치 못한 이슈가 발생합니다. 이번 시간에는 여러 이슈 중 하나인 초과된 날짜에 대해 LocalDate로 받으면 400에러가 발생하는 경우를 어떻게 안전하게 해결할지에 대해서 이야기해보겠습니다. 모든 코드는 Github에 있습니다. 문제 상황 예를 들어 다음과 같은 상황이 있다고 가정해봅시다. 날짜를 파라미터로 하는 API를 제공하고, 다른 팀에서 해당 API를 사용한다고 가정해봅시다. 해당 파라미터는 문자열이 아닌 LocalDate를 필드값으로 선언해서 사용합니다. 그럼 사용하는 팀에선 아래와 같은 투정(?)을 할 수 있습니다. "아니 LocalDate에 2020-02-31을 넣으면 2020년 2월 29일로 잘 반.. 2020. 5. 25.
오늘의 질문 2020.05.09 Q.1 Q. SI기업에서 서비스 기업으로 이직 하고 싶은 3년차 개발자입니다. 연봉 2700에 자취까지 하고 있으니 패스트캠퍼스 같은 유료 강의를 들을때면 몇 개월을 절약해야되어서 최근 1년 간은 여행도 못가고 카페에서 공부만 하고 있습니다. 그러다보니 당장 언제 죽을지도 모르는데 그렇게 하면 나중에 후회할거라는 이야기를 주변에서 많이 얘기합니다. 20대때 하는 여행과 50대의 여행은 다르다는 이야기도 자주 듣습니다. 동욱님이 그간 쓰신 글을 볼때마다 지금 하고 있는 생활이 맞다고 생각은 하지만 가끔 나이 들고 후회하지 않을까 걱정입니다. 이렇게 해도 이직을 못하고 계속 SI에서만 근무하게 되면 제 20대가 너무 아깝지 않을까 걱정됩니다. A. 제 주변을 본다면 젋었을 때 해야할 일에 대해서 크게 2가지.. 2020. 5. 9.