전체 글 10

@PathVariable 엔드포인트 매핑 원리

서론최근에 회사일을 하며 파일 다운로드 기능에 대해 리팩터링이 진행되었는데, 기존에 @PathVariable로 수행되었던 API 엔드포인트가 변경되면서 정상적으로 동작하지 않던 문제를 확인했습니다. 이에 관해 @PathVariable에 어떤 로직이 숨어있는지 알아보고자 합니다.문제 파악문제가 발생한 코드 다음은 문제가 발생하기 이전 코드에 대한 예시입니다. fileName을 PathVariable 어노테이션을 사용해서 받아왔습니다.@RequiredArgsConstructor @RestController public class DownloadController { private final DownloadService downloadService; @GetMapping("/before/file/{fileNa..

Spring 2024.10.12

[글또 10기] 삶의 지도

개발자가 되고 싶었던 어린 시절초등학교 3학년 때 담임 선생님의 컴퓨터에 수없이 설치된 광고, 스팸 프로그램을 삭제하며 칭찬을 받은 기억이 있습니다. 칭찬은 고래도 춤추게 한다는 말이 있듯 이때부터 컴퓨터와 관련된 직업을 가지고 싶다는 생각을 가졌습니다. 그래서 중학교 때는 개발자가 되기 위해서 학교 공부만 할게 아니라 뭐라도 만들어보는 경험이 필요하다고 생각해 Unity를 기반으로 한 비행기 게임 클론 코딩을 했던 경험이 있습니다. 하지만 클론 코딩 이후에 난 다음과 같은 이유로 어려움을 겪었습니다.목표에 비해 부족한 역량학업에 대한 압박컴퓨터는 나쁘다는 주위 어른들의 시선이런 이유로 대학교에 들어가기까지 개발에 대해 생각을 해본 적이 없던 거 같습니다. 그리고 지금 생각해 보면 이때부터 완벽하지 않으..

회고 2024.09.19

Redis, 그리고 Spring 에서 Redis 활용

서론Redis가 제공하는 기능 중 알고 있는 내용은 간단하게 정리하고, 직접 구현해보지 않았거나 두리뭉실하게 알고 있는 내용들에 대해 예제 코드를 작성하여, Redis에서 제공하는 기능들을 더 적극적으로 활용하고자 글을 쓰게 되었습니다.Redis에 대해Redis는 무엇인가?Redis는 인메모리 기반의 key-value DB입니다. MySQL과 같은 관계형 데이터베이스와 비교했을 때, 관계가 존재하지 않고 단순히 key 하나에 value 하나를 저장할 수 있습니다. 또한 인메모리 기반이기 때문에 디스크에 쓰고 읽는 것이 아닌, 메모리에서 데이터를 처리하게 됩니다. 메모리에서 데이터를 처리함으로써 빠른 연산을 통해 Redis를 캐시 서버로 사용할 수 있습니다.Redis 사용 시 주의점1.  메모리 관리Red..

Spring 2024.09.07

ChainedTransactionManager, JtaTransactionManager

서론여러 개의 DataSource를 다루고 있을 때, 트랜잭션 매니저를 다룰 수 있는 한 가지 방법인ChainedTransactionManager에 대해 알아보고 어떤 문제점이 있는지 찾아본 후, 이를 해결하기 위한 방법 중 하나인 JtaTransactionManager에 대해 다뤄보고자 합니다.Chained TransactionManagerChainedTransactionManager란ChainedTransactionManager는 말그대로 여러 개의 트랜잭션을 묶어서 사용할 수 있는 TransactionManager 입니다. 그렇기 때문에 여러 개의 DataSource를 다룰때 여러개의 TransactionManager를 활용하여 트랜잭션을 시작하고 끝내는 작업을 하나의 TransactionManag..

Spring 2024.07.17

AWS Lambda Java With SnapStart

서론AWS Lambda는 다양한 개발 언어를 지원하고 있습니다. 그 중 자바는 ColdStart가 다른 언어보다 유독 길어 선호하지 않고 있습니다. 이를 개선하기 위해서 나온 SnapStart 기능에 대해 소개시켜드리고, 그 전에 Lambda 개념에 대해서 정리하고자 합니다. AWS LambdaAWS Lambda란?AWS Lambda는 AWS에서 제공하고 있는 서버리스 컴퓨팅 서비스입니다. 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 다는점이 특징입니다.AWS Lambda의 장점1. 관리 비용AWS Lambda는 흔히 알고 있는 서버와 다르게 사용자가 관리하지 않고 AWS에서 서버와 운영체제 관리, 보안 패치 등을 대신 처리해주어 고가용성을 보장할 수 있기에 관리비용이 적습니다.2. 필요할 ..

AWS 2024.06.24

Route 53, DNS 그리고 레코드

서론최근에 가볍게 AWS 관리를 하기 시작했습니다. 그래서 시작점이 되는 Route53 개념과 더불어 Computer Network에서 자주 언급되는 DNS와 DNS 레코드를 정리하려고 합니다. 이후에는 AWS Route53에서 레코드를 어떻게 관리하는지 예시를 소개해 드리려고 합니다.DNS(Domain Name System)먼저 AWS Route 53에 대해 언급하기 전에 알아둬야 할 개념이 DNS 입니다. 예를 들어 tistory.com에 접속하기 위해 주소창에 도메인을 입력합니다. tistory.com을 도메인이라고 말하고, DNS를 사용해 도메인과 실제 IP와 매칭을 시켜서 사이트의 컨텐츠를 볼 수 있게 됩니다. 즉 DNS는 도메인을 IP 주소로 바꾸어주거나 IP 주소를 기억하기 쉬운 도메인으로 ..

AWS 2024.05.30

AWS VPC, CIDR, Bastion Host

서론 AWS 클라우드를 사용하면서, 기본적인 VPC, CIDR에 대한 개념을 확실하게 정리하지 않고 사용하고 있다고 생각했습니다. 그래서 기본에 충실히 하고자 AWS VPC, CIDR에 대한 개념을 정리하고, 이를 바탕으로 Bastion Host를 구현하는 것을 목표로 글을 쓰려고 합니다. VPC VPC는 어떤 역할? VPC는 데이터센터처럼 논리적으로 격리된 가상의 네트워크로 네트워크를 분리할 수 있게 도와줍니다. VPC를 왜 사용하고 특징은? VPC 사용 이유 만약 VPC가 없었다면, 인스턴스에 대해 공통으로 네트워크 설정이 필요할 때, 각각의 인스턴스마다 설정하는 번거로움이 있을 것입니다. 또한 사내에서만 사용되는 인스턴스들이 있을 수 있고, 또 대외적으로 사용하는 인스턴스들이 있을 수 있는데, 규모..

AWS 2024.04.22

AWS Presigned URL로 트래픽 낮추기

서론 2022년, 팀 프로젝트를 할 때 일기 쓰기 기능에서 이미지 저장을 다음과 같이 구현했었습니다. 클라이언트에서 업로드 하려는 파일을 서버에 전달 서버는 전달받은 파일을 S3에 저장 S3에 저장 후 리턴되는 이미지 경로를 DB에 저장 여기서 저는 '이미지 업로드를 클라이언트에서 할 수 있지 않을까?' 라는 의문점이 들었습니다. 다만 그때는 깊이 생각해보지 못했고, 현재 다시 의문에 대한 해결책인 PresignedURL을 소개해 드리려고 합니다. 소개 및 사용 이유 Presigned URL은 AWS 에서 제공하는 기능으로, 이름 그대로 미리 서명된 URL을 활용하여 AWS S3에 객체를 업로드할 수 있습니다. 즉 Presigned URL을 활용하면 누구든 객체를 업로드 할 수 있습니다. AWS Pres..

Spring 2024.03.28

신입 백엔드 개발자 2달 회고

주위에서 회고는 자주 할수록 좋다는 소리를 들었습니다. 이에 공감하여 회고를 통해 2달간 잘한 점, 못한 점, 개선점들을 적고 보완하여 더 높은 아웃풋을 내려고 합니다. 신입으로써 잘했다고 생각한 점 입사 후 1주차가 지나고 어떤 것들을 해야 적응이 빠를지 고민해 봤습니다. 문득 취업준비하는 과정에서 보았던 김영한님 인프콘 발표가 생각이 나서 이를 다시 시청하고 적용했습니다. 가장 효과를 많이 봤던 2가지, 그리고 노력했던 점 1가지는 다음과 같습니다. 1. ERD 그리면서 도메인 파악하기 당연한 얘기입니다. 물론 테이블의 개수가 적거나, 사용하는 테이블이 적다면 크게 와닿지 않을 수 있는 얘기입니다. 실제로 취준생 입장에서 진행하던 프로젝트는 아래와 같이 적은 테이블만 사용하고 있을 가능성이 높습니다...

회고 2024.02.23

2023년 생각들과 다짐, 그리고 2024년 목표

블로그의 첫 시작을 회고로 시작하려고 합니다. 2023년은 스스로에 대해 고민해 보고 정리할 수 있던 해였습니다. 지난해 동안 겪었던 일들과 그 과정에서 얻은 생각 그리고 다짐들을 기록하여, 시간이 지나서도 잊지 않기 위해 글을 작성하게 되었습니다. 2023년 경험들 경험 1. 대기업 인턴 올해 코오롱베니트에 모바일 서버 개발 직무로 채용전환 인턴에 합격해서 4월부터 일을 할 기회가 있었습니다. 원하는 기술 스택에 부합하여 지원했지만, 다음과 같은 이유로 고민했습니다. 목표로 했던 기업에 부합하지 않음 SI/SM 회사이기에 커리어 쌓기 상대적으로 어려움 하지만 당시에는 입사하면 무엇이라도 배울 점이 있을 것이고, 스스로 자기 계발을 통해 더디더라도 성장할 수 있다고 막연하게 생각한 후 입사를 결정했습니다..

회고 2024.01.10