본문 바로가기

전체글372

블로그 광고 200불 후기 구글 광고 정책 변경이 있었는지? 6월 1일부터 CPC (광고 클릭단가) 가 많이 올라서 블로그 월 광고 수익이 약 200불이 되었다.7월도 지금 추세면 그 정도 나올것 같다. 개인 AWS 계정으로 나가는 여러가지 비용들 (RDS, EC2, 도메인 등) 은 상쇄하고도 남게 되었다. 그래서 더 재밌는 시도들을 할 수 있게 되었다. 회사 놀이터 계정으로 여러가지 테스트는 하지만, 사이드 프로젝트 서비스를 회사 계정으론 할 수 없으니 많은 Java 개발자들이 이용하는 Baeldung 과 같은 컨텐츠 서비스가 되면 좋겠다는 생각을 한 적이 있다. 근데 내 블로그엔 나만 글 쓰고 싶단 생각에 포기. Baeldung은 원고료 기반으로 여러 사람들이 기고 하는 형식 그래서 요즘은 Vlad Mihalcea와 같은 사이.. 2020. 7. 19.
IntelliJ에서 동시에 여러 Run환경 함께 실행하기 최근의 웹 개발은 프론트엔드와 백엔드를 프로젝트 단위로 분리해서 개발하고 있습니다. 그러다보니 개발자들은 항상 개발을 시작할때 다음의 행위를 하는데요. 프론트엔드 환경 npm run 해서 실행 백엔드 환경 (ex: Spring Boot) IntelliJ에서 실행 매번 2가지 환경을 직접 실행해야만 합니다. 이외에도 MSA 개발을 위해 여러 API를 동시에 실행해서 테스트하거나 개발해야할때도 마찬가지입니다. API 1 애플리케이션 실행 API 2 애플리케이션 실행 API 3 애플리케이션 실행 하나의 기능을 실제로 확인해보기 위해서 매번 하나씩 실행하는 것도 허들이지만, 어느 프로젝트를 실행해야할지 기억하고 있어야 하는 것도 고역입니다. 이 웹 서비스를 실행하기 위해선 이것 하나만 실행하면 돼! 가 된다면 .. 2020. 7. 15.
Spring Boot에서 AWS 파라미터 스토어로 private 설정값 사용하기 이를 테면 DB의 접속정보나 암호화에 사용될 Salt Key 등은 프로젝트 코드 내부에서 관리하기엔 위험이 따릅니다. 누구나 볼 수 있기 때문이죠. 이건 사내 private 저장소를 사용해도 비슷합니다. 사내의 누구나 이 설정값을 확인할 수 있다면 위험하다고 보안 감사에서 지적 받을 수 있습니다. 그래서 실제 운영 환경에서는 이런 주요 설정들은 프로젝트 코드 밖에서 관리되는데요. 가장 흔한 방법은 서버에 직접 파일을 저장해서 사용하는 것입니다. 하지만 최근처럼 클라우드 환경이 대세인 상황에서는 동적으로 서버가 추가/삭제가 되는 상황에서는 서버에서 직접 파일 관리하기에는 어려움이 많습니다. 그래서 이에 대해서 외부에서 설정 정보를 관리하고, 애플리케이션에서는 해당 설정정보를 받아서 쓰는 방식이 선호되고 있.. 2020. 7. 14.
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.