전체 글

고민했던 내용을 기록합니다
· Java
Java/Spring으로 만든 웹/앱 프로젝트를 리팩토링하며 개선해나가는 과정을 공유합니다. 사용 버전 - 자바 17 - 스프링 3.2.2 - 인텔리제이 제가 생각하는 리팩토링은 코드에 근거를 쌓아가는 과정이라 생각합니다. 초기 개발 당시 별 이유 없이 다른 사람들이 쓰니까 따라 썼던 코드들을 다시 고민해 보고 개선시키는 작업입니다. 이는 단순히 코드를 정리하고 가독성을 높이는 것 이상으로, 코드가 작동하는 방식을 이해하고 문제를 파악할 수 있습니다. 환경변수 값 바인딩하기 프로젝트를 진행하다 보면 환경 변수의 값을 코드에 적용해야 하는 경우가 생깁니다. 대표적으로 AWS나 카카오 API와 같은 키 값을 예시로 들 수 있습니다. 이러한 값들은 민감한 정보이기 때문에 누구나 열람 가능한 깃허브 레포지토리에..
· Infra
AWS 프리티어로 서비스를 배포하며 생긴 과금 상황과 비용 절감 방법을 공유합니다. 문제상황 팀프로젝트를 마무리하던 도중 AWS에 요금이 청구되었다는 사실을 발견했습니다. 1.37달러의 소액이긴 하지만 수익이 없는 서비스이기에 굳이 돈을 새어 나가게 하고 싶지 않았습니다. 비용이 없어야 부담 없이 서비스를 유지하며 리팩토링을 할 수 있다는 생각입니다. 프리티어를 시작한 지 약 한 달이 지났고 2월 빌지에는 과금이 없던 상황으로 봐서 3월에 추가한 기능 중 어디선가 과금이 되었을 거라 예상했습니다. 과금 원인 결론부터 말씀드리면 과금의 원인은 클라이언트와의 https 통신을 위해 도입했던 Load Balancer였습니다. 서버끼리는 http통신, 서버와 클라이언트는 https 통신을 하기 위해 로드밸런서를..
· Infra
문제 상황 팀프로젝트 중 프론트에서 서버 API 요청 시 다음과 같은 에러가 발생했다. "has been blocked by cors policy: no 'access-control-allow-origin' header is present on the requested resource” 브라우저에서 직접 링크 누르면 값이 정상적으로 출력되나 axios로 요청 시 CORS 정책에 의해 접근이 제한된다. CORS가 무엇인지 알아보자. CORS란 무엇인가? Cross-Origin Resource Sharing의 약자로, 웹 페이지가 다른 도메인, 프로토콜, 포트를 사용하는 리소스에 접근할 때 발생한다. 기본적으로 브라우저는 같은 출처 정책(Same-Origin Policy)을 따르는데, 이는 보안상의 이유로 ..
· Infra
프로젝트 기획 단계에서 하는 고민 중 한가지는 'DB를 어디에 구축할까?' 다. 대부분 AWS EC2에 직접 구축하는 방법과 AWS RDS를 사용하는 방법으로 나뉜다. EC2와 RDS의 관계를 말할 때 드는 비유 중 하나가 ‘직접 요리해먹는 것과 요리사를 고용하는 것’이다. 이해는 가지만 확 와닿지는 않는다. 나와 같은 고민을 하고 있는 독자들을 위해 비교해 보았다. RDS Relational Database Service의 약자로, 클라우드에서 관계형 데이터 베이스를 쉽게 설정, 운영, 확장할 수 있게 하는 관리형 데이터베이스 서비스다. 데이터베이스에 대한 관리 작업을 최소화하고 개발에 집중할 수 있다. 장점 자동화 기능, 보안 기능과 같은 다양한 기능이 지원되어 운영 및 유지보수에 대한 부담이 줄어든..
· Java
이전에 쓴 코드들을 들여다보니 너무 기준 없이 사용하고 있음을 느껴서 다시 정리할 겸 대표적인 객체 생성 방법 3가지를 알아보려고 한다. 자세한 개념에 대해서는 잘 설명해 주는 글들이 많으니 넘어가고, 장단점과 함께 간단한 비교만 하겠다. public class Post { private String category; // a private String title; // b private String content; // c //각 메서드들 } 인스턴스 변수에 각각 a, b, c를 집어넣은 객체를 생성하려고 한다. 같은 목표를 각자의 방식으로 구현한 뒤 차이점을 확인해 보자. 객체를 생성하는 3가지 방법 생성자 // 생성자 public Post(String category, String title, St..
th123
코딩 일기장