New
-
환경변수 - $PATH
JDK를 설치하면 시스템 환경변수 $Path에 java의 bin 경로를 등록한다. Path의 역할이 무엇이고 왜 등록하는 걸까? 환경변수 $PATH는 운영체제가 명령어나 실행파일을 찾을 때 검색할 디렉리 목록을 지정하여 터미널 (명령 프롬프트)에서 명령어를 입력했을 때 해당 프로그램을 찾을 수 있게 해 준다. 예를 들어 사용자가 명령어를 내렸을 때 윈도우는 아래 순서로 실행해야 하는 파일을 찾는다. 1. 사용자가 위치한 현재 경로2. Path 변수에 저장된 경로 위 경로들을 다 확인해도 사용자가 입력한 파일을 찾을 수 없으면 그런 파일을 찾을 수 없다는 에러가 발생한다.따라서 언제 어디서나 파일명만 입력해도 실행하고 싶은 프로그램이 있다면 PATH 변수에 해당 파일의 경로를 추가하면 된다. ※..
2026.06.28
-
'백준 - 서비스 종료'가 내게 던진 질문
'백준'이 서비스를 종료한다. 슬픈 소식이었다. 이 소식은 백준을 자주 방문하던 시절을 떠올리게 했다. 그 당시 이직이 하고싶어서 알고리즘을 공부하며 문제를 풀었다. 몇몇 알고리즘에 익숙해지면서 못 풀었던 문제들을 점차 해결할 수 있게 되었고, 그 과정에서 느낀 성취감은 알고리즘 공부를 지속하게 하는 원동력이 되었다. 이와 더불어 연계된 solved.ac 에서 제공하는 티어 시스템은 알고리즘 공부에 색다른 재미를 주었다. 하지만, 문제 난이도가 어려워지며 문제 풀이와 알고리즘 공부에 드는 시간이 늘면서 관심은 점차 줄어들며 내 일상에서 조용히 멀어졌다. 다시 현 시점으로 돌아오면, ChatGPT를 통해 대중에게 공개된 AI는 널리 이용되며 개발 생태계에 많은 영향을 끼쳤다.이에 따라, AI가 확산되면..
2026.04.28
-
[React] SpringBoot 와 React 연동하기 - vite build
Thymeleaf와 같은 템플릿 엔진 기능 없이 SpringBoot를 API 서버로만 활용하고 React와 같은 별도의 애플리케이션을 통해 UI를 제공할 수 있다. 백엔드와 프런트엔드 기술스택을 각각 SpringBoot와 React로 결정했을 때 이 둘을 어떻게 연결하는지 간단한 예시코드로 살펴본다. 1. Spring Boot project 생성- 프로젝트 의존성스프링 스타터 (https://start.spring.io/) 를 통해 Spring 프로젝트를 생성한다.Spring과 React의 연결방법을 살펴보는 것이기 때문에 아래와 같이 web과 lombok만 의존성으로 추가하였다.dependencies { implementation 'org.springframework.boot:spring-boot-s..
2025.10.03
-
[Server] CORS ERROR를 피하는 방법 - 교차 출처 리소스 공유(CORS)
CORS란?CORS(Cross-Origin Resource Sharing, 교차 출처 리소스 공유)는 브라우저가 서로 다른 출처(Origin) 간의 리소스 공유를 안전하게 허용하기 위해 사용하는 HTTP 헤더 기반 보안 메커니즘이다. 교차 출처 요청은 다른 서버에서 응답받은 리소스를 기존 웹페이지에서 사용할 때 발생하는데, 도메인 A (https://domain-a.com)의 웹페이지에서 script를 통해 도메인 B의 이미지(https://domain-b.com/images/sample.jpg)를 요청해서 웹페이지에 공유하는 경우가 간단한 예시다. 보안상의 이유로 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한하기 때문에 javascript의 fetch() 메서드와 XMLHttpRequ..
2025.09.21
-
[설계] 멀티 테넌트 아키텍처 (Multi-Tenant Architecture) 살펴보기
멀티 테넌트 아키텍처(Multi-Tenant Architecture)란?멀티 테넌트 아키텍처는 '멀티 테넌시(Multi-tenancy)' 시스템을 구현하는 구체적인 설계 방식이나 구조를 말한다. 멀티 테넌시는 하나의 애플리케이션이 여러 고객들에게 서비스를 제공할 수 있도록 하는 소프트웨어 아키텍처이다.여기서 고객은 테넌트(tenant)라는 개념으로 다루어지는데, 특정 접근 권한을 공유하는 사용자들의 그룹을 나타낸다. 예를 들어, B2B 서비스로 제공되는 '재고관리 전산시스템'이 클라우드 시스템으로 제공되는 상황을 가정해보자. 해당 서비스를 사용하는 기업 A와 B가 있을 때, 양 기업은 서로의 데이터와 환경에 접근할 수 없으며 서비스를 실제로 사용하는 기업의 구성원들은 본인이 속한 기업의 데이터에 접근할 ..
2025.09.06
-
[SpringBoot] Testcontainers로 통합테스트 환경 구성하기 - 개념과 사용법
Testcontainers란?Testcontainers는 Docker 컨테이너로 구동되는 실제 서비스와의 통합 테스트 환경을 자동으로 구성하고 시작하기 위해 쉽고 가벼운 API를 제공하는 테스트 라이브러리이다. Testcontainers를 사용하면 목(mock)이나 인메모리 서비스 없이 운영환경에서 사용하는 것과 동일한 유형의 서비스와 통신하는 테스트를 작성할 수 있다. 통합 테스트의 어려움 - Testcontainers를 사용해야 하는 이유오늘날 소프트웨어 시스템은 다양한 기술과 도구를 활용하여 복잡한 비즈니스 문제를 해결한다. 대부분의 소프트웨어 시스템은 독립적으로 작동하지 않고 데이터베이스, 메시징 시스템, 캐시 서버 등 다른 서비스와 상호작용한다. 시스템끼리 서로 상호작용하는 이러한 환경은 애..
2025.07.09
-
[Server] Docker를 활용한 로컬 DNS 서버 구축 방법
DNS 서버란?DNS(Domain Name System) 서버는 도메인 이름을 해당하는 IP 주소로 바꿔주는 역할을 하는 서버다. 인터넷을 구성하는 모든 네트워크 기기들은 주소 값으로 숫자로 구성된 IP를 가지고 있고 우리가 이를 기억하고 사용하는 데는 다소 어려움이 존재한다. 이를 해결하기 위해 불편한 IP 주소 대신 익숙한 문자열로 구성된 이름(도메인)을 대신 사용하는데, 도메인 이름과 IP 주소를 연결하여 관리하는 체계를 도메인 네임 시스템이라 한다.예를 들어 웹사이트 티스토리에 접근하기 위해서 아이피 주소(211.183.222.4) 대신 도메인 주소 'www.tistory.com'를 사용할 수 있다. 로컬 DNS 서버 구축하기 - Docker와 dnsmasq 기반Docker로 내부 DNS ..
2025.06.22
-
[Java] Annotation Processor 사용법 & 예제
어노테이션 프로세서(Annotation Processor)란? 어노테이션 프로세서란 Java 파일을 컴파일하거나 프로젝트 빌드 시 선언된 어노테이션을 감지하고 그에따라 정해진 작업을 수행하는 도구를 의미한다. 이러한 프로세서는 코드 생성, 검증, 문서화 등 다양한 작업을 자동화할 수 있으며, 특히 반복적인 보일러플레이트 코드(Boilerplate Code)를 줄이는데 효과적이다. 이러한 처리 과정을 Annotation Processing이라고 하며, 대표적인 예로는 롬복(Lombok) 라이브러리, Jpa 모델 검증(Hibernate), Spring REST Docs 등이 있다. 표준 annotation processing API는 새로운 파일을 생성할 수 있지만 기존 파일을 수정할 수 없다는 제약조건을 ..
2025.06.09
-
[Spring Boot] 환경변수 설정 - application.yml (Profile)
소프트웨어 개발에서는 다양한 환경(개발, 테스트, 운영 등)에 따라 설정값을 유연하게 변경할 필요가 있다.스프링은 이러한 요구사항을 효과적으로 해결하기 위해 프로파일 기능을 제공하여 환경변수를 손쉽게 관리할 수 있게 하는데, 이는 스프링의 주요 강점 중 하나로 개발자가 코드 변경 없이 애플리케이션의 동작 방식을 환경에 맞게 조정할 수 있게 해 준다. 이 글에서는 환경변수의 기본 개념을 살펴보고, 스프링 프레임워크에서 이를 어떻게 효율적으로 관리할 수 있는지 알아보도록 한다. 환경변수란?위키백과에 등록된 환경변수(environment variable)의 사전적 정의는 '프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임'이다. 쉽게 말하여 애플리케이션이 정상적으로 동작하기 위해 사용..
2025.05.11
-
개발자 - 커뮤니티의 중요성?
국비학원의 백엔드 코스를 수료하며 개발자 커리어를 시작했다.학원에서 학습한 내용을 통해 동기들과 함께 프로젝트를 만드는 과정은 흥미로웠다. 하지만, 거기까지였다. 개발자가 커뮤니티에 참여했을 때 경험할 수 있는 장점은 느끼지 못했기 때문이다. 개발자를 업으로 삼는 많은 사람들이 커뮤니티 참여를 추천하며, 나 역시 이에 같은 생각이다. 그 이유는 무엇일까? 그동안 겪었던 경험을 돌아보며 커뮤니티에 참여하며 가졌던 생각을 돌아본다. 모각코 스터디모각코는 '모여서 각자 코딩'의 줄임말로 정해진 장소에 모여서 각자 해야할 작업을 하는 스터디를 의미한다.이름 그대로 프로젝트를 위한 코딩을 할 수도 있지만 회사 업무, 인강 및 서적을 통한 개발 공부 등 개인 시간을 투자해야하는 작업을 함께 할 수 있다. 다양한..
2025.04.06