[SpringBoot] Gradle 프로젝트 생성하기
·
SpringBoot
이전 글: [SpringBoot] Gradle 프로젝트 생성 시 Java 17 인식 오류 해결 과정 Java 17 설정 문제를 해결한 후, 이제 정상적으로 Gradle 프로젝트를 생성할 수 있게 되었다. 1. Spring Starter Project 생성이제 Spring Initializr를 통해 새로운 프로젝트를 생성한다.프로젝트 기본 설정첫 번째 화면에서는 프로젝트의 기본 정보를 설정한다.Service URL: https://start.spring.io - Spring Initializr 공식 사이트Name: jy-blog-1 - 블로그 프로젝트라는 의미로 명명했다Type: Gradle - Groovy - Maven 대신 Gradle을 선택했다Java Version: 17 - 이전에 해결한 Java ..
[SpringBoot] Gradle 프로젝트 생성 시 Java 17 인식 오류 해결 과정
·
SpringBoot
항상 Maven 프로젝트만 사용하다보니 Gradle 프로젝트를 간단한 블로그 프로젝트로 만들어 보려고 했다. 하지만 프로젝트 생성 과정에서 예상치 못한 문제에 부딪혔다. 문제 상황Spring Boot 프로젝트를 Gradle로 생성하려고 하는데 다음과 같은 오류가 발생했다.분명히 JDK 17은 설치되어 있었고, 명령프롬프트에서 java -version을 실행하면 17 버전이 정상적으로 출력되었다. 하지만 Eclipse에서 Spring Boot 프로젝트를 생성할 때만 Java를 찾지 못한다는 오류가 계속 발생했다. 시도한 해결 방법들1. Eclipse JRE 설정 확인Eclipse의 Window → Preferences → Java → Installed JREs에서 확인해보니 jdk-17이 목록에는 있었지만..
[후기] IT 면접 후기 – 부족함을 느낀 하루
·
기타
저번 주 수요일, 처음으로 면접 연락을 받았다. 교육이 끝난 후 틈틈이 입사 지원서를 넣고 있었지만 연락이 없어 우울하던 차에 받은 첫 연락이라 감격스러웠다. 면접은 오늘 오후 2시에 예정되어 있었고, 예정대로 면접을 다녀왔다. 주말 동안 면접 준비를 했지만, 역시나 떨리는 건 어쩔 수 없었다. 편한 마음으로 임해야 말을 더듬지 않는데, 오늘 면접은 전체적으로 망한 느낌이 들었다.이번 면접에서 나는 코드 개발 업무가 아닌, 데이터 분석 및 ETL 관련 경력 2년을 바탕으로 지원했다. 그래서인지 자기소개 이후에는 경력 중심의 질문이 이어졌다. 실무에서 사용했던 DB는 무엇인지, 어떤 개발 툴(IDE)을 사용했는지 등에 대한 질문이 있었다. 하지만 의외로, 내 경력에 명시된 프로젝트가 어떤 내용이었는지를 묻..
[AWS] EC2에서 Nginx로 포트 번호 없이 웹 서비스 배포하기
·
AWS
이번 포스팅에서는 AWS EC2에서 Nginx를 사용하여 포트 번호 없이 웹 서비스를 제공하는 방법에 대해 공유한다. 실제로 겪었던 문제 상황과 해결 과정을 중심으로 설명한다. Nginx를 사용하게 된 이유EC2 인스턴스에 Spring Boot(Java), React, Python 서버를 함께 배포하여 사용하고 있었다. 각 서비스는 다른 포트에서 실행 중이었다.http://43.201.102.244:8082 (Java + React)http://43.201.102.244:8000 (Python 서버)이처럼 각 서비스에 접근하기 위해 매번 IP 주소 뒤에 포트번호까지 입력해야 하는 불편함이 있었다. 개발 중에는 괜찮을지 모르지만, 실제 사용자에게 이런 형태의 URL을 제공하는 것은 사용성 측면에서 바람직하..
[AWS] Docker와 GitHub Actions를 활용한 CI/CD 파이프라인 구축과 환경 변수 문제 해결
·
AWS
FastAPI로 개발한 백엔드 애플리케이션을 Docker 컨테이너로 배포하는 과정에서 환경 변수 관련 문제가 발생했다. 리액트와 자바는 환경변수 키 파일을 포함한 채로 빌드 배포해도 문제가 없었기에 도커에서도 당연히 될 거라 생각했는데, 도커를 이용한 배포에서는 환경변수가 자동으로 적용되지 않는다는 것을 몰랐다. 실행할 때 키를 하나하나 입력해서 실행하는 방법도 가능하지만 번거롭고 키 개수가 늘어날 수도 있어서, 기존에는 로컬에서 Docker 이미지를 빌드하고 EC2 서버에 수동으로 배포하는 방식을 사용했다. 하지만 이 과정을 자동화하기 위해 GitHub Actions를 도입했다. 이 글에서는 이러한 문제를 해결한 과정을 정리해보고자 한다. 1. 문제 상황애플리케이션이 EC2 서버에서 다음과 같은 오류를..
[AWS] Windows에서 AWS EC2까지: Docker로 Python 서비스 배포하기
·
AWS
프로젝트를 진행하면서 프론트엔드(React)와 백엔드(Java)는 Docker 없이 직접 빌드하여 배포했다. 하지만 AI 기능을 담당하는 Python 백엔드는 의존성 관리와 배포 환경의 일관성을 위해 Docker를 활용하기로 결정했다. 이번 글에서는 Windows 환경에서 Docker를 설치하고, Python 애플리케이션을 Docker 이미지로 빌드한 후 Amazon EC2에 배포하는 전체 과정을 정리했다. Docker란?Docker는 애플리케이션을 개발, 배포, 실행하기 위한 오픈소스 플랫폼이다. Docker를 사용하면 애플리케이션과 그 의존성을 "컨테이너"라는 표준화된 유닛으로 패키징할 수 있다. 이 컨테이너는 개발 환경, 테스트 환경, 프로덕션 환경 등 어디서든 동일하게 실행될 수 있어 "내 컴퓨터..
[AWS] EC2 서버 용량 문제 해결하기
·
AWS
이전 글: [AWS] React + Spring Boot(Maven) 프로젝트 AWS EC2(Ubuntu)에 빌드 및 배포하기이전 포스팅에서 진행했던 배포 과정이 처음에는 정상적으로 작동하는 것을 확인했으나, 오늘 낮에 다시 접속해보니 웹사이트에 연결이 되지 않는 상황이 발생했다. 더 이상한 점은 로컬 환경에서도 데이터베이스 연결이 안 되기 시작했다는 것이다. 처음에는 네트워크 문제나 설정 오류라고 생각했으나, 점점 EC2 인스턴스의 용량 문제가 의심되기 시작했다. 이 글에서는 AWS EC2 인스턴스에서 발생한 메모리 부족 문제를 진단하고 해결한 과정을 상세히 설명하고자 한다. 1. 문제 진단하기이전 포스팅에서 배포했던 애플리케이션에 접속이 되지 않아 확인해보니, DB 연결이 끊겨 있었다. 로컬 환경에서..
[AWS] React + Spring Boot(Maven) 프로젝트 AWS EC2(Ubuntu)에 빌드 및 배포하기
·
AWS
프로젝트 개발이 어느 정도 끝나서 내가 빌드 배포를 맡게 되어서 진행하게 되었다. 간단한 프로젝트여서 도커 사용 없이 빌드 배포하는 방법을 선택했고, Maven 프로젝트이며 EC2는 우분투 환경으로 인스턴스를 만들었다. DB는 기존에 EC2 안에 설치해두었기 때문에 따로 할 필요는 없었다. React 애플리케이션을 먼저 빌드하여 Spring Boot의 정적 리소스 폴더에 통합한 후, 단일 JAR 파일로 배포하는 방식을 다룬다. 배포 과정에서 발생할 수 있는 문제점들과 해결 방법도 함께 안내한다. 1. 초기 빌드 및 배포 과정1-1. React 빌드 자동화 설정React 프로젝트에서 빌드 후 자동으로 Spring Boot의 static 폴더로 파일을 복사하도록 설정한다. package.json 파일에 다..
[SpringBoot] 이클립스에서 Maven과 Lombok 환경 설정하기 (오류 해결 과정)
·
SpringBoot
팀원이 작업한 파일을 내려받아 실행해보니 log 부분에서 계속 오류가 발생했다. log cannot be resolved라는 오류 메시지가 뜨는데, 처음엔 원인을 전혀 알 수 없었다. 인터넷을 찾아보니 lombok이 설치되지 않아서 생기는 문제였다.처음에는 간단하게 인텔리제이로 프로젝트를 열고 플러그인으로 lombok을 설치했다. 실행해보니 문제없이 잘 돌아갔다. 그대로 인텔리제이를 사용할까도 생각했지만, 이클립스에서 떠있는 오류를 보니 꼭 해결하고 싶어졌다. 그래서 maven과 lombok을 직접 설치해보기로 결정했다. lombok이란?자바 프로젝트에서 반복적으로 작성해야 하는 Getter, Setter, toString(), equals(), hashCode() 등의 메소드를 어노테이션을 통해 자동으..
[React] Context API를 활용한 효율적인 상태 관리
·
React
개발을 하다 보면 컴포넌트 간에 데이터를 주고받아야 하는 상황이 자주 발생한다. React에서는 기본적으로 props를 통해 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달한다. 하지만 애플리케이션이 복잡해지면서 여러 레벨을 거쳐 데이터를 전달해야 하는 '프롭 드릴링(Prop Drilling)' 문제가 생기게 된다. 이러한 문제를 해결하기 위해 React에서는 Context API를 제공한다. Context API란?React 컴포넌트 트리 전체에서 데이터를 공유할 수 있게 해주는 기능이다. 일반적으로 전역적으로 필요한 데이터(사용자 인증 정보, 테마, 언어 설정 등)를 관리하는 데 유용하다. Context를 사용하면 중간 컴포넌트들을 통해 props를 전달하지 않고도 컴포넌트 트리의 어느 부분에서나 필..