BlueNyang

전체 글

지금까지 작성된 모든 글을 확인해 보세요.

총 5페이지 중 1페이지

wslNo. 50

WSL과 Rocky Linux

로컬 윈도우와 RHEL 계열 서버의 환경 불일치를 해결하기 위해 가상 머신 대신 WSL 2를 사용하고, 기본 우분투 대신 록키 리눅스(Rocky Linux)를 설치합니다. 공식 WSL 이미지를 직접 가져와 사용자 설정과 dnf 패키지 업데이트 등의 초기 구축을 완료합니다. 이를 통해 패키지 관리자와 보안 설정 등이 서버 환경과 완벽히 일치하는 일관된 로컬 개발 환경을 완성할 수 있습니다.

#wsl#Rocky Linux#windows#Linux#Hyper-V#VM
DockerNo. 49 IaaS 배포 실전

[Cloud Infra] 도커의 시작

본 글은 Rocky Linux 서버에 도커를 설치하고 이미지와 컨테이너의 개념 및 차이점을 설명합니다. 효율적인 빌드 캐시 최적화와 멀티스테이지 빌드를 활용해 가벼운 도커 이미지를 제작하는 방법을 실습 코드와 함께 다룹니다. 마지막으로 컨테이너의 라이프사이클과 포트 매핑을 직접 확인하며 다음 단계인 도커 컴포즈와 볼륨 활용을 위한 기초를 마련합니다.

#docker#dockerfile#container#Rocky Linux#Multi-stage Build#Podman
Cloud InfrastructureNo. 48 IaaS 배포 실전

[Cloud Infra] 서버와 SSH

이 글은 안전한 서버 배포를 위해 SSH 비대칭 키를 이용한 원격 접속 및 간편 설정 방법을 소개합니다. 또한 저스펙 서버의 OOM(메모리 부족) 에러 방지를 위한 스왑 메모리 할당과 패키지 업데이트 과정을 다룹니다. 마지막으로 SSH 기본 포트 변경, SELinux 정책 허용, 방화벽 설정을 통해 외부 침입을 예방하는 기초적인 서버 보안 구축 방법을 제시합니다.

#SSH#Linux#Rocky Linux#IaaS#Deployment#Swap#firewalld#SELinux#sshd
NestJSNo. 47

NestJS 기초 — 모듈·컨트롤러·프로바이더부터

NestJS는 모듈과 의존성 주입(DI) 구조를 강제하여 높은 예측 가능성과 개발 편의성을 제공하는 TypeScript 기반 백엔드 프레임워크입니다. 데코레이터와 생성자 주입 방식 등 Spring Boot와 유사한 아키텍처를 공유하여 기존 스프링 개발자가 적응하기 쉽습니다. 핵심 개념인 모듈, 컨트롤러, 프로바이더는 DI를 통해 유기적으로 결합되어 애플리케이션의 명확한 역할 분담과 경계를 지원합니다.

#modular-architecture#dependency-injection#type-safety#adapter-pattern#circular-dependency
Code Quality ToolsNo. 46

[Tools] Rust 기반 JS/TS 툴킷 Oxc(Oxlint) 이해와 프로젝트 적용 가이드

Oxc(Oxlint, Oxfmt)는 기존 ESLint와 Prettier의 병목을 해결해 검사 속도를 초 단위에서 밀리초(ms) 단위로 단축함으로써 개발 흐름의 지연을 최소화합니다. 규칙의 지속적인 통제를 위해 자동 마이그레이션 대신 필요한 규칙만 직접 작성해 운용하는 것이 효과적입니다. 아직 베타 단계인 Oxfmt의 특성을 고려하여, 프로젝트 요구사항에 따라 단독 교체하거나 기존 도구와 레이어로 병행하여 실용적으로 도입할 수 있습니다.

#oxc-toolchain#linter-migration#pre-commit-hook#layered-tooling#dx-optimization
SpringNo. 45

[Kotlin Spring Boot] 롬복(Lombok) 버리기 - OAuth2 핸들러 리팩토링

본 글은 자바에서 코틀린으로 전환하며 롬복을 걷어내고 OAuth2 로그인 성공 핸들러를 리팩토링한 과정을 다룹니다. 주 생성자와 val을 활용해 의존성의 불변성을 보장하고, 안전한 캐스팅(as?)과 엘비스 연산자를 적용해 런타임 널(Null) 에러를 방지했습니다. 또한, if-else 표현식을 사용하여 불필요한 가변 변수를 제거함으로써 코드의 안정성과 가독성을 높였습니다.

#oauth2-success-handler#primary-constructor#safe-casting#expression-statement
SpringNo. 44

[Kotlin Spring Boot] 데이터 정합성을 지키는 코틀린의 스마트함과 JPA Converter의 함정

자바에서 코틀린으로 JPA `AttributeConverter`를 마이그레이션할 때 엘비스 연산자(`?:`)를 사용해 `null`을 빈 문자열(`""`)로 치환하면 데이터베이스 정합성이 깨질 수 있습니다. 이를 해결하기 위해 제네릭 타입을 Nullable 타입(`String?`)으로 명시하고 안전한 호출 연산자(`?.`)를 활용하여 `null` 상태를 온전히 보존해야 합니다. 코틀린의 타입 시스템을 올바르게 신뢰하고 활용하는 것이 코드 단축보다 영속성 계층의 정합성을 지키는 데 중요합니다.

#attribute-converter#data-integrity#rdbms-null-handling#safe-call-operator
SpringNo. 43

[Kotlin Spring Boot] 스프링 예외 처리 코드 다이어트와 코틀린의 스마트함

자바에서 코틀린으로 전역 예외 처리를 마이그레이션할 때는 어노테이션 누락을 방지하고 `::class` 문법을 정확히 매핑해야 합니다. 예외 발생 시 NullPointerException을 유발하는 `!!` 대신 엘비스 연산자(`?:`)를 활용하여 안전하게 기본값을 처리하는 것이 중요합니다. 또한 단일 표현식과 `.also` 스코프 함수 등을 활용해 보일러플레이트 코드를 줄임으로써 본질적인 예외 처리 로직에만 집중할 수 있습니다.

#global-exception-handler#elvis-operator#scope-functon#boilerplate-code
SpringNo. 42

[Kotlin Spring Boot] Spring Properties에 스마트함 더하기

코틀린 스프링 부트는 자바에 비해 설정 객체 매핑 과정에서 뛰어난 안전성과 간결함을 제공합니다. `data class`와 `val`을 통해 보일러플레이트 없이 완벽한 불변성을 확보하고, 강력한 널 안전성으로 런타임 에러를 부팅 시점에 조기 차단합니다. 이처럼 언어적 강점과 프레임워크의 결합은 시스템의 예측 가능성을 극대화하여 더 안정적인 개발 환경을 제공합니다.

#configuration-properties#immutability#null-safety#fail-fast
SpringNo. 41

[Spring Data JPA] Spring Data JPA에서 새로운 Entity를 판단하는 방법

Spring Data JPA의 `save()` 메서드는 식별자 값을 바탕으로 새 엔티티 여부를 판단하여 `persist` 또는 `merge`를 실행합니다. 하지만 식별자를 직접 할당하면 새 엔티티임에도 기존 엔티티로 오판되어 불필요한 `SELECT` 쿼리(`merge`)로 인해 성능이 저하될 수 있습니다. 이를 해결하기 위해서는 `Persistable` 인터페이스를 구현하여 `isNew()` 판별 로직을 커스터마이징해야 합니다.

#spring-data-jpa#persist-vs-merge#persistable#entity-lifecycle
BlueNyang

BlueNyang

BlueNyang의 개발 log

카테고리

  • Development
  • Framework
  • Language
  • Dev Tools
  • DevOps & Infra
  • Studies

페이지

© 2026 BlueNyang. All rights reserved.

Made with Nuxt.js and Directus