
발단 나는 회사에서 개발 외에 운영업무도 맡고 있는데, 어느날 고객사로부터 우리 서버가 메모리를 과도하게 사용하고 있다는 알림이 왔다고 전해들었다. 그래서 문제의 원인이 우리가 개발한 소스인지 아니면 그외의 원인이 있는 것인지 확인하기 위해 서버에 접속했다. 전개 우선은 제일 먼저 한 일은 우리가 개발한 애플리케이션이 실제로 메모리를 과도하게 사용하고 있는지 보는 것이다. ps -ef --sort -rss 위 명령어를 사용하면 메모리를 많이 사용하는 순으로 볼 수 있다. 또, top으로도 확인할 수 있다. 이때 shift + M을 누르면 메모리 사용 내림차순으로 정렬해서 볼 수 있다. 주의해서 봐야할 것은 RES이다. 또, 해당 프로세스에 대한 정보를 확인하기 위해 아래의 명령어를 이용하여 정보를 확인했..
작년 7월에 @ControllerAdvice로 같은 예외일 때 뷰나 데이터를 내려주는 분기처리를 할 수 없을까 고민했었다. @ControllerAdvice로 같은 예외일 때 뷰나 데이터를 내려주는 분기처리를 할 수 없을까에 대한 고민 @ControllerAdvice로 같은 예외일 때 뷰나 데이터를 내려주는 분기처리를 할 수 없을까에 대한 고민 이 고민은 파라미터 유효성 체크를 편하게 하는 방법을 찾아보다가 시작되었다.(파라미터 유효성 체크를 편하게 해보자) 현재 우리 프로젝트는 JSP뷰를 사용하고 있다. 그리고 한 컨트롤러 클래 dakafakadev.tistory.com 내내 저 고민을 하고 있었지만 이것저것 할 게 많아서 손을 못 대고 있던 찰나, 마침 내게... 예외에 따른 뷰와 객체 반환 분기처리를..

JPA란 과거 자바 진행에서는 EJB 안에 엔티티 빈이라는 ORM 기술이 포함되어 있었으나, 너무 복잡하고 기술 성숙도도 떨어지고 J2EE 애플리케이션 서버에서만 동작하는 등의 어려움이 있었음. 이때 하이버네이트라는 오픈소스 ORM 프레임워크가 등장했는데 가볍고 실용적이고 기술 성숙도도 높았음. 결국 EJB 3.0에서 하이버네이트를 기반으로 새로운 자바 ORM 기술 표준이 만들어졌는데 이것이 JPA. JPA가 제공하는 CRUD API 저장 정확히 이야기하면 아래 코드는 엔티티 매니저를 사용해서 회원 엔티티를 영속성 컨텍스트에 저장한다. jpa.persist(member); 조회 String memberId = "helloId"; jpa.find(Member.class, memberId); 수정 JPA는 ..
2022년이 얼마 남지 않은 이 시점에 나는 개발자로 경력을 시작한지 1년 7개월이 되었다. 빛나는 3년차가 되기 위해 정신없이 공부를 해온 것 같은데 돌이켜보면 여러 가지 일을 한번에 하느라 집중을 제대로 못했다는 생각도 든다. 한해동안 내가 무엇을 했는지 정리해보려고 회고를 적는다. 개발 관련 강의 6개 완강 인프런 강의 수료증을 보니 올해에만 6개 강의를 완강했다. 자바와 스프링 강의인데, 스프링의 threadlocal, 트랜잭션과 전파, 자바8의 Stream, 동시성 처리 등을 공부했다. 바쁘다, 바쁘다 하는 와중에도 강의를 끝마쳤다는 건 정말 칭찬할만하다. 그런데 저 강의들의 내용들을 전부 다 내가 소화했다고 보기는 어려워서 가볍게 한 번 더 들어야겠다. 컴퓨터과학 전공 시작 올해부터 컴퓨터과학..

담당하고 있는 시스템에 엑셀 양식을 다운로드받는 기능이 있다. 그냥 양식만 다운로드받는 게 아니라 데이터 유효성 검사 기능이 추가되어 있는데, 아래와 같은 기능이다. 이미지출처 : https://meaningone.tistory.com/546 엑셀 드롭다운 목록 만들기 및 삭제! 오늘은 엑셀 드롭다운 목록 만드는 방법에 대하여 알아보겠습니다. 엑셀에는 데이터 유효성 검사라는 기능이 있습니다. 용어가 확 와 닿지 않을 텐데요. 사용자가 셀에 입력하는 데이터를 제어 meaningone.tistory.com 이번에 이슈가 된 건 엑셀 양식 다운로드를 받았는데, 드롭다운 목록이 사라진 것이었다. 다운로드받은 엑셀을 열려고 하면 아래와 같은 화면이 뜬다. 그래서 "예"를 누르면 파일이 열리기는 하지만 드롭다운목록..

서버를 AWS로 옮기면서 배포자동화를 하고 있었는데, BeforeBlockTraffic에서 UnknownError가 났다. 알아보니 배포할 EC2에도 CodeAgent가 깔려있어야 CodeDeploy랑 연결이 되는데, 그게 없어서 문제였다. 아래 블로그글대로 EC2에서 CodeAgent를 설치후 실행하면 아래 이미지처럼 성공한다. https://jinmay.github.io/2020/05/13/aws/how-to-install-code-deploy-agent-ubuntu/

헤로쿠가 유료화된다고 해서 다시 AWS로 개인프로젝트 서버를 이사했다. 무료 도메인도 사서 쓸 수 있다길래 요번에는 그것도 사용해봤다. 그런데 HTTP 요청을 HTTPS로 리다이렉션하는 과정에서 조금 애를 먹어서 다음번에도 쓸 수 있게 하고, 혹시 나처럼 AWS가 익숙하지 않은데 HTTPS를 사용해야 하는 사람들을 위해 글을 쓴다. 리다이렉션 외에 인증서 발급, ACM, Route 53 설정 등은 제외한다. 나의 경우 애플리케이션은 8090 포트를 사용했다. 이럴 경우, 리스너와 대상 그룹(Target group)을 아래와 같이 구성해야 한다. 리스너는 요청을 받는 곳이다. 그러므로 HTTP 요청이 들어올 때 HTTPS로 리다이렉션하려면 HTTP의 80포트를 HTTPS의 443포트로 리다이렉션해주어야 한..