본문으로 건너뛰기
코드룸CODE ROOMTENMO ↗

기술 블로그

웹과 앱을 만들며 남긴 기록 447편입니다.

API Gateway (Spring Cloud Gateway) 알아보기

API Gateway란? 마이크로서비스 아키텍처에서 API 게이트웨이는 클라이언트 요청을 각 마이크로서비스로 라우팅하고, 인증/인가, 로드 밸런싱, 요청 변환, 로깅 등의 공통 기능을 중앙 집중적으로 처리하는 중요한 역할을 맡습니다. Spring Boot 기반 마이크로...

효율적인 통신을 위한 핵심 서비스 디스커버리

서비스 디스커버리는 마이크로서비스 아키텍처에서 각 서비스들이 서로를 쉽게 찾고 통신할 수 있도록 지원하는 중요한 개념입니다. 마이크로서비스 환경에서는 여러 서비스가 독립적으로 배포되고 확장되기 때문에, 각 서비스의 위치(IP 주소, 포트 등) 동적으로 변화할 수 있습니...

[Spring Boot] 테스트 주도 개발(TDD)

테스트 주도 개발(TDD, Test-Driven Development)은 코드를 작성하기 전에 테스트를 먼저 작성하는 소프트웨어 개발 방법론입니다. TDD는 코드의 품질을 높이고, 유지보수성을 향상시키며, 오류를 미연에 방지하는 효과적인 개발 방식입니다. TDD란 무엇...

프로그래머스 문자열 겹쳐쓰기 Lv.0

slice를 자유롭게 사용 할 수 있는지 물어보는 문제로 보입니다. `my_string`.slice(0, s)를 통해 앞 부분을 추출하고, 겹쳐 쓸 문자열을 중간에 더 해준 후 마지막에 남는 문자열을 이어붙여주면 문제 요구사항에 답할 수 있습니다. function so...

마이크로서비스 아키텍처: 분산 시스템 이해

마이크로서비스 아키텍처는 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분해하는 아키텍처 패턴입니다. 각 서비스는 자체적으로 배포되고 유지보수되며, 다른 서비스와 느슨하게 결합되어 상호작용합니다. 이러한 아키텍처를 도입할 때의 주요 원칙들은 애플리케이션의 복잡성을 ...

프로그래머스 특수문자 출력하기 Lv.0

입력받는 값인 줄 알았으나, 단순하게 console.log(); 작성할 줄 아는지 확인하는 문제입니다. const readline = require('readline'); const rl = readline.createInterface({ input: process.s...

[Spring Boot] Spring Test를 이용한 효율적인 통합 테스트전략

Spring Boot 애플리케이션을 개발할 때, 전체 시스템의 통합성과 동작을 검증하기 위해 통합 테스트는 필수적입니다. 통합 테스트는 여러 컴포넌트들이 함께 잘 작동하는지 확인하며, Spring Test를 이용하면 이러한 테스트를 손쉽게 작성할 수 있습니다. 통합 테...

[Spring Boot] JUnit과 Mockito를 이용한 효율적인 테스트 전략

Spring Boot 애플리케이션을 개발할 때, 코드의 안정성과 품질을 유지하기 위해 단위 테스트는 필수적인 과정입니다. 특히, JUnit과 Mockito를 활용하면 테스트를 보다 효율적으로 작성할 수 있습니다. 단위 테스트란 무엇인가? 단위 테스트는 애플리케이션의 가...

[Spring Boot] API 문서화란? Swagger란?

API 문서화란? RESTful API의 엔드포인트, 요청 형식, 응답 데이터 등을 명확히 설명하는 과정을 말합니다. API 문서화는 다른 개발자, QA, 팀, 또는 외부 사용자들이 API를 이해하고 사용할 수 있도록 돕는 중요한 작업입니다. API 문서화 이점 협업 ...

프로그래머스 대소문자 바꿔서 출력하기 Lv.0

대소문자 변환 함수를 사용할 수 있냐, 문자 범위를 비교 할 수 있냐를 물어보는 간단한 문제입니다. 입력받은 문자열을 루프를 통해 하나씩 탐색했습니다. 이후 문자열을 result에 추가하여 반환했습니다. 우선 문자 범위 비교입니다. 입력받은 문자열을 하나씩 검토합니다....

프로그래머스 a와 b 출력하기 Lv.0

두 정수 a와 b가 공백으로 구분되어 한 줄씩 출력하면 됩니다. 단순하게 형식에 맞게 출력하면 됩니다. 숫자가 아닌 경우가 존재할 수 있기 때문에, Number()로 변환해줬습니다. 문제의 핵심은 Number로 변환과 공백 처리입니다. const readline = r...

프로그래머스 문자열 출력하기 Lv.0

단순하게 rl.close(); 와 console.log(str)을 통해 출력하면 해결됩니다. 입력받고 종료를 해주면됩니다. const readline = require('readline'); const rl = readline.createInterface({ input...

Next.js와 Tailwind CSS에서 일본어(외국어) 폰트 적용하기

Next.js와 Tailwind CSS에서 일본어 폰트를 적용하는 방법에 대한 가이드입니다. 일본어 폰트를 사용하려면 웹 폰트를 로드하거나 로컬 폰트를 사용할 수 있습니다. Next.js 14버전↑사용 시 4번!! 1. Google Fonts로 일본어 폰트 적...

[Spring Boot] Form 데이터를 위한 객체 설계 VO vs DTO, 무엇을 선택할까?

Spring Boot로 웹 애플리케이션을 개발할 때, 사용자가 입력한 Form 데이터를 처리하기 위한 객체를 설계하면서 "VO(Value Object)와 DTO(Data Transfer Object) 중 무엇이 적합할까?"라는 고민을 많이 합니다. VO (Value O...

Hono를 활용한 Next.js 서버리스 최적화

Next.js는 기본적으로 API 라우트를 제공하며 서버사이드 렌더링을 지원하지만, 서버리스 환경에서 최적화된 API 성능을 원하는 경우, Hono 와 같은 경량 프레임워크를 함께 사용하는 것이 도움이 될 수 있습니다. 1. Hono란 무엇인가? Hono 는 Node....

Next.js 14 배포 시 캐시 문제 해결하기

Next.js 14의 App Router는 기본적으로 여러 레이어에서 캐싱을 수행합니다. ※ Next.js 15버전을 사용합시다!! 캐싱이란? 프론트엔드 : 브라우저에서 CSS, JS 파일을 캐시하여 페이지 로딩 속도를 향상. 백엔드 : 서버에서 자주 조회되는 데이터를...

[Spring Boot] RESTful API를 통한 웹 서비스 구축

RESTful API 구축 Spring Web과 Spring Data JPA 종속성을 추가하여 RESTful API를 구축 예시 자료입니다. (반드시 따라야 할 필요는 없습니다. 하지만 유지보수 차원에서 아래와 같은 구조가 유지보수 차원에서 좋습니다. 선조들의 지혜가 ...

[Spring Boot Security] OAuth2와 JWT에 대해서 알아보자

OAuth2와 JWT(JSON Web Token)은 웹 애플리케이션 인증과 인가를 처리하는 데 많이 사용되는 기술입니다. 인증과 권한 부여를 효율적으로 처리하는 데 중요한 역할을 합니다. Spring Boot Security 는 OAuth2 로그인을 간단히 설정할 수 ...

[Spring Boot Security] 보안 설정에 대해서 알아보자

Spring Boot Security는 강력한 보안 설정 기능을 제공하여 개발자가 간편하게 웹 애플리케이션의 보안을 강화할 수 있도록 합니다. 1. HttpSecurity를 이용한 보안 설정 1.1 HttpSecurity 클래스는 HTTP 요청에 대한 보안을 구성하는 ...

[Spring Boot Security] 인증과 권한 부여

Spring Boot Security는 웹 애플리케이션의 보안을 책임지는 강력한 도구로, 특히 인증(Authentication)과 권한 부여(Authorization)에 대한 확실한 구현이 가능합니다. 1. 인증 (Authentication) 1.1 인증의 개념은 사용...