본문 바로가기

2019/097

Spring Batch의 멱등성 유지하기 프로그래밍에서 자주 사용되는 단어 중에 멱등성 이 있습니다. 이 멱등성을 한마디로 정의 하면 연산을 여러번 적용하더라도 결과가 달라지지 않는 성질 입니다. 참고: idempotent-rest-apis Spring Batch에서도 역시 이런 멱등성이 필요한 경우가 있습니다. 예를 들어 Spring Batch를 사용하다보면 동적으로 변하는 날짜가 필요한 경우가 있습니다. 대표적으로 다음과 같은 경우들 입니다. 매일 한번 어제 매출 데이터를 집계해야할 때 현재 시간을 기준으로 유효기간이 만료된 포인트를 정리할 때 매일 한번 오늘을 기준으로 휴면회원 처리를 할 때 등등 실행되는 시간을 기준으로 데이터를 조회하고 처리해야할 경우들입니다. 이럴때 가장 흔하게 사용되는 방법이 LocalDate.now() 혹은 Loc.. 2019. 9. 29.
IntelliJ 2019.2 에서 Gradle로 run과 test가 실행될때 인프런 강의를 올린 뒤 최근에 받은 질문이 있습니다. 즉, IntelliJ로 메인 메소드를 실행했는데 그레이들로 실행한것처럼 로그가 출력된다는 것인데요. 실제로 IntelliJ 2019.2로 버전 업데이트 이후 메인 메소드와 테스트 메소드를 실행하면 다음과 같은 로그가 발생합니다. 메인 메소드테스트 메소드이는 명령 실행자의 기본값이 변경되었기 때문입니다. 확인 하기 위해 다음과 같이 설정을 찾아봅니다. Preferences (윈도우라면 Settings) 에서 Build, Execution, Deployment -> Build Tools -> Gradle 로 이동합니다. 그리고 다음의 2가지 항목을 확인합니다. Build and run using Run tests using 2가지 항목이 모두 Gradle.. 2019. 9. 23.
Github Two Factor 인증 설정하기 (feat. Authenticator) 보안상 문제로 사내 계정 혹은 그룹 계정 등은 Two Factor (2FA) 를 적용해야만 합니다. 다른 분들의 블로그에선 대부분 SMS 인증 + Git 터미널 방식에 대해서만 소개되어 있어, OTP + GUI Client 에서의 적용 방법을 정리했습니다. 0. 들어가기 전에 들어가기 전에 크롬 확장 프로그램이 설치되어 있어야만 합니다. Authenticator 라고 불리는 2FA 코드 발급기입니다. 굳이 Github의 2FA 때문이 아니더라도 AWS 2FA 등 여러 2FA 에서 유용하게 사용되니 이번 기회에 한번 설치해보시는것도 좋습니다. 일단 이 플러그인 설치 후 다음으로 진행합니다. 1. Github 2FA 활성화 본인 Github 프로필에서 Settings 항목으로 이동합니다.Security ->.. 2019. 9. 10.
TeamCity 설치하기 최근 들어 스프링 배치를 수행하는 Runner로 젠킨스가 최선인가? 라는 의문을 계속 보게 되었습니다. (비단 배치 수행용이 아닌 배포에서도 마찬가지로) 여러 대안책을 검토 중에 젯브레인 (JetBrains) 에서 만든 Team City가 생각났습니다. 여러 비교글이 있었지만, 결정적 계기는 김영재님의 포스팅 였습니다. 전반적인 포스팅 내용들을 보면서 시작해봐도 괜찮겠다 싶어 별도의 AWS EC2에 설치해서 진행하게 되었습니다. TeamCity로 시작하고자 하시는 분들은 참고하셔도 좋을것 같습니다. 포스팅은 Windows OS가 아닌 Linux OS에서 진행됩니다. 명령어는 Centos 기반으로 하고 있지만, Ubuntu 역시 비슷하게 사용할 수 있습니다. 1. 환경 확인 일단 Java 8이 설치되어 있.. 2019. 9. 9.
TeamCity ServerUrl 변경하기 TeamCity가 설치된 서버의 도메인 주소가 변경되면 등록된 server Url을 같이 변경해주어야 합니다. Github OAuth의 Redirect URL등과 같이 TeamCity 서버 주소를 생성하는 기능들이 모두 예전 도메인으로 진행되기 때문인데요. 해당 설정을 Web 에서는 쉽게 변경할 수 있지만, 로그인 조차 안되는 상황에선 설정파일을 직접 수정해야 합니다. 그래서 여기서는 서버의 설정파일을 직접 수정하는 방법으로 진행하겠습니다. 본문 먼저 TeamCity의 Data Directory (여러 설정들이 담긴 디렉토리로 보시면 됩니다) 위치를 확인합니다. 보통은 TeamCity 설치된 위치/.BuildServer 입니다. 해당 위치가 아니시라면 아래와 같이 로그를 통해 위치를 확인합니다. vim .. 2019. 9. 8.
젠킨스 빌드 파일 캐시 문제 젠킨스를 통해 Github Clone -> Build를 하다보면 다음과 같이 이름이 변경된 파일의 이전 파일이 그대로 남아 있는 경우를 종종 보게 됩니다. 아래 사진은 01-makeFiles.config였던 파일을 00-makeFiles.config로 변경했는데 그대로 00도 남아있는 경우입니다. (실제 프로젝트에서는 이미 01-makeFiles.config 파일이 존재하지 않습니다.) 이는 젠킨스의 workspace가 완전히 초기화 되지 않기 때문입니다. 젠킨스의 경우 npm install 등 패키지 다운로드가 매번 build때마다 발생하는 것을 막기 위해 workspace를 삭제하지 않고 덮어 쓰기 방식으로 진행됩니다. 이런 문제를 해결하기 위해 젠킨스에서는 빌드 환경에서 한가지 옵션을 제공 합니다... 2019. 9. 6.