전체 글

성장 중 🌱🌱
· BackEnd
웹 서버(WS)의 진화 : Apache vs NGINX위 post에 이어지는 내용입니다.WAS(Web Application Server) 란?WAS의 정의먼저 WAS(Web Application Server)의 정의는 다음과 같다.웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크 대표적으로 Apache Tomcat이 있다.참고로 Apache Tomcat는 WS 단계에서 계속 이야기했던 Apache와는 아예 별개의 소프트웨어이다.Apache와 TomcatApache HTTP Server (보통 Apache라고 부름)웹 서버(WS) 역할을 담당주로 정적 콘텐츠를 처리HTTP 요청을 처리하며, 동적 콘텐츠를 처리할 경우에는 WAS(Tomcat)와 연동하여 작업을 나눕니다.A..
· BackEnd
1. 웹서버(WS)에 대하여1-1. 웹서버(WS) 란?NGINX, Apache 두 소프트웨어 모두 “웹서버 소프트웨어”이다.그렇다면 WS(웹서버)란 무엇일까?클라이언트의 HTTP 요청을 받아 정적인 컨텐츠를 제공하는 서버 혹은 프로그램이다.이후에 다시 말하겠지만, WS는 정적인 컨텐츠를 서비스하는 데에 특화된 서버 소프트웨어이다.동적인 콘텐츠를 처리 못한다는 것은 아니다.참고로, Apache의 경우 자체적으로 동적인 컨텐츠 또한 처리가 가능하다.NGINX의 경우 불가능하다.하지만, 동적 처리는 보통 WAS(Web Application Server)에서 주로 수행하므로, Web Server는 프록시 역할만 하면 충분하다.여기서 주요한 점은 “정적인 컨텐츠”이다.html, JS 같은 정적인 컨텐츠들 정도는 ..
✅ 개요 (Overview)웹 애플리케이션 개발 시 클라이언트-서버 구조가 일반적이지만, 서버 간 통신이 필요한 경우도 자주 발생한다. 서버에서 다른 API로 요청을 보내야 하는 경우, Spring Boot에서는 다양한 HTTP 클라이언트 옵션을 제공한다. 타팀의 프로젝트에서 해당 문제가 발생했다고 하여 정말 처음보는 현상이라 궁금해서 나도 찾아보며 같이 해결해보았다. Spring 공식 문서에서 RestTemplate이 향후 deprecated 될 것이라는 안내를 보고, 새롭게 도입된 RestClient를 사용해보기로 했다고 한다.그런데 RestClient로 FastAPI 서버와 통신하는 과정에서 해당 문제가 발생했다...[참고 : uvicorn==0.29.0 ; python_version == "3.1..
✅ 개요 (Overview)문제 발생 시점 및 상황Swagger를 서버에 띄우는 과정에서 내용이 보이지 않고 404, 500 등의 에러 발생기술 스택 / 환경 정보 백엔드: Spring Boot 3.4.4 (Java 21)프론트엔드: Next.jsAPI Gateway: GCP VM 인스턴스에 Nginx 리버스 프록시 설정Swagger: springdoc-openapi-starter-webmvc-ui:2.8.6 사용API 구조: 백엔드 API는 /api 경로 아래에 위치 (/api/users, /api/auth 등)Nginx Prefix 설정하나의 도메인에서 Next.js 프론트엔드는 루트 경로(/)로,Spring Boot 백엔드는 /api 경로 아래로 서비스하도록 Nginx 리버스 프록시를 구성했다. 로..
객체 선언의 근본: Type 변수 = new Constructor() 구조 분석자바에서 객체를 생성하는 기본 구조는 Type 변수 = new Constructor()이다. 이 패턴은 자바의 객체 지향적 특성을 잘 보여주는 핵심 문법 요소이다. 각 구성 요소의 의미를 분석해보면 다음과 같다.Type 변수명 = new Constructor();Type: 변수의 참조 타입을 정의한다. 클래스, 인터페이스, 또는 제네릭 타입이 올 수 있다.변수명: 메모리에 생성된 객체를 참조하는 이름이다.new: 힙 메모리에 객체를 생성하는 키워드이다.Constructor(): 해당 클래스의 생성자를 호출한다.여기서 중요한 점은 new의 진정한 의미이다. new는 단순히 메모리에 공간을 할당하는 것이 아니라, 실제로 힙 메모리..
· Cloud
0. 배포 방식먼저 배포 방법이 어떻게 발전했는지, 그리고 최근 동향을 알아보자.서버중소/중견 기업은 아직 온프레미스 환경에서 서버 구축도 많이 한다.기존 시스템 + 보안 및 예산의 문제 등으로하지만 대부분의 회사에서 AWS와 같은 클라우드 전환도 빠르게 진행 중 소스코드 관리 & CI/CD 방법한국 기업의 국룰 조합인 ‘React + SpringBoot’ 프로젝트라고 가정해보자. 1. 기본 조합 (외주 많거나 소규모)프런트S3 + CloudFront또는 Vercel / Netify (React 기반일 경우)백형상관리: GitHubCI: GitHub Actions / JenkinsJenkins : 금융권, 전통적인 시스템, 온프레미스, 다양한 커스터마이징 필요할 때CD :GitHub Acitons에서 S..
· Cloud
1. 프런트엔드 배포 방식1-1. NGINX 사용브라우저 │ ▼[Nginx (EC2)] ├─ React 정적 파일 서빙 └─ /api 요청 → Spring Boot 프록시  1-2. S3 + CloudFront + ALB 사용브라우저 │ ├─ 정적 리소스 요청 → [CloudFront → S3 (React)] └─ API 요청 → [ALB → EC2(Spring Boot)] 1-3. 참고사항프런트와 백의 위치프론트: S3 (서버리스) → VPC 밖백엔드: EC2, ECS 등 VPC 내부ALB vs Nginx리버스 프록시로써의 Nginx 역할은 사라짐이제는 프론트에서 직접 API 서버로 요청(다만 Cors 문제는 따로 해결)ALB는 단순히 HTTP 라우팅 + 로드 밸런싱만 해줌Reac..
· Cloud
1. Auto Scaling 설정우리가 원하는 최종 아키텍쳐에서는 가용성을 위해 뒷단 서버가 Auto Scaling 되는 것을 원했다.기존 인스턴스 → [작업] → [인스턴스에서 템플릿 생성]을 하면,자동으로 해당 인스턴스 기반으로 한 AMI가 생성된다.하지만 이 방식은 AMI 이름이 자동으로 정해져서 헷갈릴 수 있고,AMI를 명시적으로 관리하지 않으면 추적이 어렵기 때문에,직접 AMI를 먼저 만든 다음 → Launch Template에서 선택하는 방식이 더 안전하다. 1-1. AMI 이미지 생성EC2-web-3tier-nginx를 기반으로 AMI 이미지를 만들어보자.그 전에 대상그룹에서 Healthy 상태인지 확인하고! (안에 Nginx 제대로 돌아가는 지 확인한 뒤 이미지 만들 것)sudo syste..
dog-pawwer
지노개발일기