본문 바로가기

2019/116

[스프링 부트와 AWS로 혼자 구현하는 웹 서비스] 출간 후기 (출판사: 프리렉, 쪽수: 416, 정가: 22,000원) 서적 링크 오프라인 서점에는 2019.12.04 (수) 부터 올라갈 예정입니다. 강남 교보문고나 광화문 교보문고는 주말에도 올라올 순 있겠지만, 혹시 모르니 꼭 재고 확인을 하고 방문 부탁드립니다. 현재 (2019.11.30) 온라인 예약 주문은 가능합니다. 교보문고 YES24 인터파크 쿠팡 오타나 실습 오류가 있으실 경우 이슈에 등록해주시거나 검색을 부탁드립니다. 소개 저의 첫 저서인 스프링 부트와 AWS로 혼자 구현하는 웹 서비스가 출간되었습니다. 스프링 부트 책으로는 드물게 스프링부트 파트와 AWS를 이용한 운영파트가 5:5로 구성된 책입니다. 즉, 스프링 부트만 사용하는 개발자가 아닌 스프링 부트를 사용하는 서버 개발자가 되고 싶은 분들에.. 2019. 11. 30.
MariaDB 설치 및 설정 AWS 를 쓸 수 있다면 Aurora가 정답이지만, IDC를 쓰고 있다면 MariaDB 혹은 MySQL을 직접 설치해서 사용할 필요가 있습니다. 여기선 IDC 환경에서 MariaDB 운영을 위해 필요한 기본 설정들과 설치를 진행해보겠습니다. 1. OS 설정 저 같은 경우 별도로 IDC 장비를 사용하지 못하여 AWS EC2에 직접 설치하며 사용할 예정입니다. Centos 6을 쓰신다면 거의 비슷한 명령어로 수행할 수 있습니다. 1-1. ulimit 수정 다음으로 ulimit 설정을 합니다. ulimit에 대한 자세한 내용은 예전에 작성한 글을 참고해보세요. 아래 파일을 열어 확인해봅니다. vim /etc/security/limits.conf 아래와 같이 전체 사용자의 nofile 옵션을 추가합니다. * s.. 2019. 11. 17.
MariaDB ERROR 1524 Plugin is Not Loaded 문제 해결 MariaDB를 설치하던 중에 root 계정의 비밀번호 설정을 잘못할 때가 있습니다. 그럼 아래와 같이 접속 시도시마다 에러가 발생합니다. ERROR 1524 (HY000): Plugin '잘못된 플러그인' is not loaded 이 문제를 해결해보겠습니다. 1. 해결 서버에 접속해 root 계정으로 전환합니다. sudo su - root 이제 실행하는 모든 명령어는 sudo가 생략되었다고 생각하시면 됩니다. 정상적인 MariaDB 실행으로는 위와 같이 플러그인 에러가 계속 발생합니다. 그래서 이럴때를 대비해 mysqld_safe (일종의 윈도우에서 안전모드 같은 거라 생각하시면 됩니다.)를 사용합니다. 아래 명령어로 실행해봅니다. mysqld_safe --skip-grant-tables & enter.. 2019. 11. 17.
IntelliJ 실행시 최근 종료한 프로젝트 바로 실행되지 않게 하기 IntelliJ를 실행하면 항상 가장 최근에 종료한 프로젝트가 자동 실행됩니다. 한개의 프로젝트를 개발중이라면 크게 문제가 되진 않겠지만, 여러 프로젝트를 개발중이신 분들이라면 매번 다시 새 프로젝트를 열어야만 합니다. 특히나 전에 종료한 프로젝트가 2개나 3개라면 처음 실행할때 2~3개가 동시에 실행됩니다. 이럴 경우 사양이 높지 않은 노트북은 중간에 프리징에 가까운 멈춤 현상을 겪을수도 있습니다. 실행시 인텔리제이는 인덱싱 기능을 수행하기 때문에 실행시 많은 리소스가 필요합니다. 대신 이런 인덱싱 기능 때문에 실제 개발단계에서 파일 검색등에서 많은 속도 향상이 있습니다. 그래서 다음과 같이 매번 실행할때마다 프로젝트 선택 화면이 나오길 바라는 분들이 계십니다. 그래서 해당 설정을 진행해보겠습니다. 인.. 2019. 11. 13.
TeamCity 빌드 실패시 결과 Slack으로 알람 받기 Teamcity에서는 공식적으로 Slack Notifier를 지원하진 않습니다. 이건 젠킨스도 마찬가지라서 플러그인 설치를 해야하는것은 동일합니다. 다만 Teamcity에서는 공식적으로 IntelliJ IDEA 에서 결과 알람을 받을 수 있도록 지원하고 있습니다. 이 부분은 이후에 소개드리겠습니다. Teamcity의 알람을 Slack으로 받을 수 있는 여러 플러그인들이 존재합니다만, 여기서는 Slack Notifier 플러그인들 보다는 웹훅 플러그인을 사용합니다. Slack Notifier 플러그인들의 경우 다음의 문제점들을 경험했는데요. 설치시 Zip파일을 직접 Upload 해야하는 방식 Slack Notifier Plus Slack 외에 다른 알람 연동시 어차피 Webhook이 필요함 그래서 여기에서.. 2019. 11. 12.
MultipleBagFetchException 발생시 해결 방법 JPA의 N+1 문제에 대한 해결책으로 Fetch Join을 사용하다보면 자주 만나는 문제가 있습니다. 바로 MultipleBagFetchException 입니다. 이 문제는 2개 이상의 OneToMany 자식 테이블에 Fetch Join을 선언했을때 발생합니다. OneToOne, ManyToOne과 같이 단일 관계의 자식 테이블에는 Fetch Join을 써도 됩니다 이 문제에 대한 해결책으로 보통 2가지를 언급하는데요. 자식 테이블 하나에만 Fetch Join을 걸고 나머진 Lazy Loading로 모든 자식 테이블을 다 Lazy Loading으로 이럴 경우 성능상 이슈가 아무래도 해결되는게 아니다 보니, 좀 더 좋은 방법을 소개드리겠습니다. 모든 코드는 Github에 있습니다. 1. 문제 상황 One.. 2019. 11. 3.