[Spring] 로컬, AWS LightSail에서 AWS parameter store로 환경변수 관리하기
·
Backend/Spring
1. 배경 및 목표현재 저는 회사에서 개발용서버를 구축하기 위해 작업을 하고 있습니다.먼저 개발서버는 AWS LightSail을 이용하기로 하였습니다.운영서버는 EC2에 구축되어 있지만 LighSail을 선택한 이유는 정액제로 요금을 부과하기 때문입니다. 현재 운영서버에는 Backend 프로젝트만 올라가있지만 개발서버에는 Frontend 프로젝트와 개발용 DB 또한 Docker로 올릴 계획을 하고 있습니다. 서버 리소스 비용을 정확히 산정하기 힘든 상황에서 요금폭탄을 피하기 위해 Lighsail을 이용하기로 하였습니다.이러한 상황에서 개발서버와 운영서버의 application.yaml의 환경변수들을 효과적으로 관리하기를 원했고 AWS에서 제공하는 암호 관리 서비스인 AWS Parameter Store를 ..
[Spring] Spring AOP의 동작원리, JDK Dynamic Proxy와 CGLIB
·
Backend/Spring
오늘은 Spring AOP에 대해서 공부해보겠습니다.1. 관점 지향 프로그래밍(AOP)1) 등장 배경, 횡단 관심사객체지향 프로그래밍(OOP)는 프로그램을 객체(Object)라는 기본단위로 나누고 이들의 상호작용을 바탕으로 프로그래밍 하는 방법입니다. 하지만 객체지향 방식만으로 프로그래밍을 하다보면 문제 상황이 발생합니다. 예를들어, 각 서비스 로직이 걸리는 시간을 로그로 출력한다고 가정해봅시다.// 서비스 마다 걸리는 시간을 로그로 표시한다고 가정try { ... business ...} finally { log.info("time = {}", watch.stop());} 수많은 서비스로직에 하나하나 이와같은 로그를 남긴다면 코드 양도 어마어마해질거고 반복된 작업을 계속해야 할 것입니다.로깅..
[Spring, JPA] @OrderBy로 정렬하기, OneToMany 특정 칼럼 기준 정렬
·
Backend/Spring
일하면서 터진 문제 중, 올려도 될만한 문제들을 포스팅하려고 합니다.제 포스팅은 적용 방법만 보시고, 어떤 상황에 적용할지는 고민을 좀 더 하셨으면 좋겠습니다.취준생일때나 개인 프로젝트 할때 보시면 크게 문제는 안될것같습니다배경 @OneToMany 관계로 매핑된 엔티티를 조회할 때, 정렬 순서가 중요한 요구사항이 생겼습니다.HappyStair Entity는 여러개의 HappyStairTarget을 가지고 있습니다. 즉 OneToMany 관계입니다.HappyStairTarget은 orders라는 칼럼을 가지고 있고 이는 순서를 나타냅니다.항상 이 orders를 기준으로 정렬된 상태로 가지고 와야하는 상황입니다. 처음에는 List을 가져온 뒤 Collections.sort()를 사용하였지만 매번 사용하는것..
[Spring] Apache.commons.exec 사용, 외부 명령어 실행 API 만들기, Java에서 Shell 사용
·
Backend/Spring
3번째 프로젝트가 성공적으로 종료되었습니다.기존의 WEB 프로젝트와 많이 다른 방식으로 진행되었고 그 중 처음 사용해보거나 의미있는 기술들을 포스팅 해보려합니다. 프로젝트는 다음과 같이 진행되었습니다. Java 17Spring Boot 3.2.5GradleReact1. 목표 이번 프로젝트의 주제는 초보자를 위한 인프라 플랫폼입니다.GitHub 링크 : https://github.com/o54711254/Dobie GitHub - o54711254/DobieContribute to o54711254/Dobie development by creating an account on GitHub.github.com간단한 정보를 입력 후 배포를 경험할 수 있게 하는것이 이번 프로젝트의 주제였고 간단한 버튼 클릭만..
[WebSocket] Spring, React, Stomp로 실시간 채팅, 저장 구현하기
·
Backend/Spring
팀원들과 프로젝트를 진행하였고 의미 있는 내용들을 포스팅 해보려고 합니다.프로젝트는 다음과 같이 진행되었습니다.Java 17Spring Boot 3.2.0JPAGradleReact저에게는 자그마한 꿈이 있었습니다. 바로 저장되는 실시간 채팅입니다. 한번 좌절을 맛보았던 터라 이번 프로젝트는 반드시 해내자고 다짐하고 결과적으로 성공했습니다. 그 과정을 설명해보려고 합니다. 이번 프로젝트에서 프론트엔드를 맡아서 백엔드 코드는 설명이 부족할 수 있습니다.1. 목표제가 생각하는 구현하고자 했던 채팅은 당근마켓과 유사한 1:1 채팅이였습니다. 참고자료들에서는 사용자 입장메세지, 일반메세지로 나누었지만 1대1 채팅을 원하는 저에게는 의미없었습니다. 또한 채팅내용이 저장이 되어야 했습니다. 굳이 다른 백엔드 서버를 ..
서블릿(Servlet)과 서블릿 컨테이너(Servlet Container)
·
Backend/Spring
ServletServlet은 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이며클라이언트의 요청을 처리하고, 그 결과를 반환하는 역할을 합니다.웹페이지가 동적인 기능을 할 수 있게 도와주는 것입니다. 특징 클라이언트의 Request에 대해 동적으로 작동하는 웹 애플리케이션 컴포넌트 입니다.HTML을 사용하여 Response 합니다.JAVA의 스레드를 이용하여 동작합니다.MVC 패터에서 컨트롤러로 이용됩니다.HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet클래스를 상속받습니다.UDP 보다 속도가 느립니다.HTML 변경 시 Servlet을 재 컴파일해야하는 단점이 있습니다.Servlet Container서블릿을 담고 관리해주는 컨테이너..