전체 글16 NCP로 난생 처음 서버 배포하기-1 서론같이 일하는 동료분께서 너무 좋은 아이디어를 가져와주셔서, 비사이드에서 진행하는 온라인 해커톤 포텐데이에 참가하며 사이드프로젝트를 진행하고있다. 회사에서 근무하며 자동배포 시스템이 이미 잘 되어있는 프로젝트에 참여하여 작업한 결과물을 배포한 적은 있지만, 부끄럽게도 직접 서버를 구성하고 서비스를 배포해본 경험이 아직 없었다.포텐데이에 참여하면 네이버 플라우드 플랫폼(Naver Cloud Platform, NCP)의 크레딧을 받을 수 있는데, 이 크레딧을 활용하여 NCP에서 서버를 구성하고 서비스를 배포하는 경험을 정리해보려고 한다.첫번째 글에서는 네트워크를 구성하고, 보안 설정을 하고, 네트워크에 서버를 배치시키는 과정에 대해 정리할 것이다. 사전 지식1. VPC (Virtual Private C.. 2025. 3. 16. [NestJS] Prisma Transaction 들어가며오늘은 NestJS + Prisma 조합의 애플리케이션에서 데이터베이스 트랜잭션(Transaction)을 구현하는 방법을 알아보겠습니다. 데이터베이스 트랜잭션은 DBMS에서 사용되는 더 이상 쪼갤 수 없는 작업의 최소 단위입니다.예를 들어 주문-결제 로직이 상품 수량 업데이트 → 유저 정보 업데이트 → PG API 호출 → 결제 상태 업데이트 이렇게 작성되어있는데, PG API 호출 단계에서 예외가 발생해 종료되었다고 했을 때 아무런 처리가 되어있지 않다면 데이터 일관성이 깨지게됩니다. (상품, 유저 테이블은 결제 완료 처리가 반영되었는데 결제 테이블은 반영되지 않음)이런 경우 상품, 유저, 결제 테이블 업데이트를 하나의 트랜잭션으로 묶어서 처리할 수 있습니다. 이 글에서는 nestjs-cls/t.. 2025. 3. 2. [NestJS] 로컬에서 스크립트 실행하기 (feat. nestjs-command) 들어가며 백엔드 개발을 하다보면 데이터베이스 스키마가 변경되어 마이그레이션을 수행하거나, 데이터를 수동으로 조작해야 하는 경우가 종종 발생합니다. 이러한 작업을 수행할 때 데이터베이스에 직접 SQL 쿼리(Raw Query)를 실행할 수도 있고, 프로젝트의 코드베이스를 활용해 스크립트를 작성하고 실행하는 방법도 있습니다.Raw Query 방식은 실수가 발생할 위험이 있고, 반복적으로 수행해야하는 작업인 경우 DB 스키마나 비즈니스 로직이 변경될 때마다 별도로 반영해야하는 불편함이 있습니다. 그래서 저는 ORM과 기존의 비즈니스 로직을 활용할 수 있는 스크립트 방식을 더 선호합니다.NestJS는 의존성 주입(Dependency Injection, DI) 방식으로 동작하기 때문에, Service나 Reposi.. 2025. 2. 16. [NestJS] 마이크로서비스와 하이브리드 애플리케이션 구성하기 마이크로서비스(Microservice) 아키텍처란?마이크로서비스 아키텍처는 하나의 애플리케이션을 여러개의 독립적으로 배포 가능한 작은 서비스로 나누고, 이들 사이의 결합을 느슨하게 유지하는 소프트웨어 아키텍처 방식입니다.기존의 모놀리식(Monolithic) 아키텍처와 비교했을 때, 서비스별 코드의 규모가 작고 개별적으로 배포할 수 있다는 점이 큰 장점입니다. 이러한 특성 덕분에 서비스 확장성과 유지보수에 용이하며, 최근에는 대규모 애플리케이션을 운영하는 많은 조직에서 마이크로서비스 아키텍처를 도입하는 것을 볼 수 있습니다.이번 글에서는 NestJS에서 마이크로서비스 아키텍처를 구성하는 방법을 알아보고, 각 마이크로서비스에서 API 서버와 내부 서비스간 통신을 함께 운영하는 하이브리드 애플리케이션(Hybr.. 2025. 2. 2. 일급 컬렉션, 왜 Collection만 특별취급 하나요? Java 공부를 시작하고 일급 컬렉션(First Class Collection)이라는 개념을 처음 알게되었다.일급 컬렉션의 정의와 필요성에 대해 공부하고 코드에 적용해보던 중, 일급 컬렉션의 장점이 값 객체(VO, Value Object)와 비슷하다는 생각이들었다. 그리고 왜 Collection만 "일급 컬렉션"이라는 이름을 붙이면서 특별취급을 할까? 라는 의문이 들었다. 이와 관련해 알아본 내용을 글로 정리해두려고 한다. 일급 컬렉션(First Class Collection)이란? 일급 컬렉션이란 컬렉션을 포장(wrapping)하면서 그 외 다른 멤버 변수가 없는 클래스를 의미한다.여기서 컬렉션은 데이터의 집합이나 그룹. 즉 여러개의 데이터를 담을 수 있는 자료구조를 의미하는데, Java Collec.. 2025. 1. 5. [글또] 10기 백엔드 반상회 후기 들어가며 개발자 글쓰기 모임 글또(글또는 글 쓰는 또라이가 세상을 바꾼다)는 직군별로 빌리지라는 직군 모임이 나누어져있다. 이번에 글또 분들을 오프라인에서 만나뵙고 발표도 듣고 네트워킹도 할 수 있는 백엔드&인프라 빌리지 반상회(행사 이름도 너무 귀엽다..)가 열려서 참가했다.같이 글또 활동을 하고 있는 친한 동료분께서 글또 멤버분들과 커피챗을 할 때마다 좋은 경험이었다고 말씀하셔서, 오프라인에서 글또 분들을 만나는게 정말 기대됐다! 특히 퇴사를 하고나니 사람들을 만나서 개발 이야기나 고민을 나누는 시간이 많이 줄어들어서 그런 시간을 가지고싶기도 했다. 그래서 참가 신청 공지가 올라오자마자 달려가서 신청을 하고 설레는 마음으로 기다렸다. 반상회 장소 도착 글또는 아주 따뜻한 커뮤니티이지만 내향인인.. 2024. 12. 7. [Java] 함수형 인터페이스(Functional Interface)를 활용해 중복 코드 줄이기 배경 우아한 테크코스 7기 프리코스의 3주차, 4주차 과제에 다음과 같은 요구사항이 있었다.사용자가 잘못된 값을 입력할 경우 예외를 발생시키고, "[ERROR]"로 시작하는 에러 메시지를 출력 후 그 부분부터 입력을 다시 받는다. 처음 구현한 코드는 사용자 입력을 받는 컨트롤러의 메서드마다 `try-catch` 구문 처리를 하고,예외가 발생했을 때 에러 메시지를 출력한 뒤 재귀호출을 하는 형태였다.public class LottoController { // ... private PurchasePrice requestPurchasePrice() { try { outputView.displayPurchasePriceRequest(); re.. 2024. 11. 24. [번역] JUnit5 Parameterized Test 가이드 본 글은 Baeldung의 Gide to JUnit 5 Parameterized Tests를 일부 번역한 글입니다.정확한 정보는 원문을 통해 확인해주시길 바랍니다! JUnit 5 (OverView)Parameterized Test는 JUnit5의 새로운 기능 중 하나로, 하나의 테스트 메서드를 서로 다른 인자들을 이용해 여러번 실행할 수 있는 테스트 도구이다. 다음과 같은 유틸성 함수를 테스트한다고 해보자.public class Numbers { public static boolean isOdd(int number) { return number % 2 != 0; }} `@ParameterizedTest` 어노테이션을 사용해 Parameterized Test를 구현할 수 있다.@Pa.. 2024. 10. 27. [우테코 7기 프리코스] 1주차 회고 우아한 테크코스 7기 프리코스 1회차 과제가 끝났다! 2년 전 Spring Boot로 서비스 MVP를 개발한 이후, 정말 오랜만에 Java 프로젝트를 경험하고 있다.처음에 과제를 열어봤을 때, 프로그래밍 요구 사항과 기능 요구 사항이 생각보다 간단해서 의외였다. 조금 안일하게도 나는 “이렇게 간단한 프로그램에 설계가 필요할까?”라고 생각하며 설계보다는 기능 구현을 먼저 시작했다. 올해 인프콘에서 발표된 지속 성장 가능한 설계를 만들어가는 방법 세션에서 인상 깊었던 “가장 좋은 설계는 설계를 하지 않는 것이다”라는 말도 떠올라, 우선 기능 구현에 집중할 수 있었다.결과적으로는 기능 구현을 하다보니 설계의 필요성을 느낄 수 있었고 좋은 구조와 코드에 대해 고민해볼 수 있는 기회가 되었다. 그리고 요구 사항이.. 2024. 10. 25. 이전 1 2 다음