본문 바로가기

전체 글63

Spring Framework ResponseEntity 사용에 대한 고찰 현업에서 Spring Framework로 Rest Api서버를 구현하다보면 ReponseEntity를 자주 보게됩니다. Spring Framework Rest Api를 처음 공부할때는 ResponseEntity를 사용하지않고 대부분 Java 객체를 직접 응답하였는데 현업에서 기존에 있던 코드들을 확인해보니 ResponseEntity를 사용하여 Java 객체를 응답하는 형식으로 대부분 구성되어 있었습니다. 일반적으로 Java 객체를 응답해도 HTTP 프로토콜형식에 맞게 응답이 잘 되었는데 ResponseEntity를 사용하면 혹시나 내가 모르는 다른 차이점이 있나해서 눈으로 직접 확인해보기로 했습니다. @PostMapping public ResponseEntity requestOrder(@RequestBo.. 2024. 11. 17.
Docker ugeek/webdav를 이용한 간편한 WebDav서버 구축 오늘은 간편하게 Docker ugeek/webdav 이미지를 활용하여 간편하게 WebDav서버를 구축하는 방법을 알려드리겠습니다. WebDav는 Http프로토콜을 통해 원격 파일 시스템에 대한 액세스와 관리 기능을 제공하는 표준입니다. 말이 어렵지만 그냥 손쉽게 설명하자면 파일 서버라고 생각하시면 편합니다. 구글 드라이브를 사용하고 있기에 그닥 필요는 없었지만.. 최근 아이폰, 아이패드에서 사용하고 있는 nPlayer의 구글 드라이브 연동이 막혀버리는 바람에.. 막혔다기보다 유지보수를 안하고 있어서 구글드라이브 Api연동관련해서 문제가 발생하고 있나봅니다.. nPlayer에서 구글드라이브에 접근하면 차단된 앱이라는 안내만 나오고 인터넷에 나오는 각종 방법으로 시도했음에도 접속이 불가능 하더군요. 구글드라.. 2024. 11. 12.
아이폰 면세로 구매하기 백수의 시간이 지나가고 10월 이직을 앞둔 9월 마지막주에 붕뜨는 한주 뭐라도 해볼까... 하는 생각이 들어서 SkyScanner 어플을 켜고 가장 저렴한 항공권이 뭐있을가 찾아보니 떡하니 왕복 10만 3천원 히로시마! 출발 8시간전 덜컥 비행기표를 예약했습니다. 출발 8시간 비행기표 예약이라니.. 캐리어도 없이 백팩 하나메고 다녀왔습니다. 이 글에서는 여행기를 적으려는건 아니고.. 여행을 즐기던 와중에 어머니께서 사용하시던 아이폰 X 생각이 나더군요.. 딱 마침 아이폰 16 1차 출시국 판매가 시작되어서 이왕 해외온김에 아이폰 면세로 구매해볼까? 바로 히로시마 역 바로 앞에 있는 빅 카메라를 다녀왔습니다. 위 사진은 인터넷에서 퍼온 사진인데 빅카메라에 가면 아이폰 재고 현황판이 게시되어있습니다. 일본에.. 2024. 11. 11.
현업에서 자주 사용한 Java Stream Api 제가 현업에서 Java 언어로 개발을 진행하며 가장 많이 사용하고 있는 Stream에 대해 이야기 해보려고 합니다.Java Stream Api는 Java 8에서 추가된 기능으로 Java의 Collection 요소를 간결하고 선언적으로 처리할 수 있는 Api 입니다.Java Stream에서 선언적 표현방식이라는 의미가 중요하게 언급되는데 여기서 선언적 표현 방식의 뜻은 무엇을 할 것이가에 집중하여 코드를 작성하는 방식을 의미한다고 합니다.선언적 표현방식과 대립되는 개념으로 명령형 표현방식이 있는데 아래 코드를 통해 비교해보도록 하겠습니다.아래 두 메소드는 Board Entity List를  Repository로부터 조회하여 응답 Dto로 변환하여 반환하는 메소드 입니다. // 명령형 방식의 메소드publi.. 2024. 11. 10.
그럼에도 불구하고 Lombok을 도입해야하는 이유? 오늘은 Lombok이 도입되어 있지 않은 레거시 프로젝트에 롬복 라이브러리를 도입시도를 하며 경험했던 이야기를 해보려고 합니다. Lombok은 Java를 기반으로한 프로젝트에서 당연시 되는 라이브러리입니다. 하지만 제가 이번에 요구사항을 반영하고 코드 수정이 필요했던 프로젝트는 워낙 오래된 Spring  프로젝트이기도 했고 히스토리를 들어보니 Lombok을 도입하면 발생할 수 있는 사이드 이펙트에 대한 고민때문에 Lombok이 도입되어 있지 않은 상태였습니다. 그러면 왜 이제? 잘돌아 가는거 냅두면 되지 왜 롬복을 추가하냐 라는 점을 생각해 보았는데결국 제가 생각할 수 있던 이유는 생산성이였습니다. public class MemberDto {        private String name;    pri.. 2024. 10. 27.
스프링 서버가 우아하게 죽는법 "Graceful Shutdown" 제가 속해있던 회사에서는 백엔드 어플레이케이션 서버는 Spring Framework를 사용했었고 Github marster 브렌치 머지 -> Github Action -> Aws ecr -> Aws ecs -> Aws ec2 CI/CD환경으로 구성되어 있었습니다. 다만 ec2에 새롭게 업데이트된 버전으로 docker container를 시작 시킬때는 꼭 ecs를 통해 자동으로 실행하는것이 아닌 개발자가 직접 베스찬 서버를 통해 프라이빗 네트워크의 ec2 하나하나 직접 접근하여 무중단 배포 롤링 방식으로 서버를 리스타트하는 정책으로 진행했었습니다. 추후 블루/그린, 카나리까지 염두하고 있었지만, 아직 서비스가 많이 크지 않았기 때문에 크게 문제 되는 배포 방식은 아녔습니다. 개발자로 첫 업무를 시작한 지 .. 2024. 9. 10.