// 최상단에 jquery를 추가해주자

Back-End

· Back-End/AWS
AWS RDS는 보안상 **퍼블릭 엑세스(공개 IP 접속)**을 비활성화하는 것이 일반적입니다.이 경우, **EC2 인스턴스를 Jump Host(중간 연결 서버)**로 설정한 후,로컬에서 포트포워딩을 통해 RDS에 접속할 수 있습니다.✅ 1. 전제 조건EC2 인스턴스는 RDS와 동일 VPC에 있고, RDS에 접근 가능해야 함로컬 PC는 EC2로 SSH 접속이 가능해야 함 (.pem 키 보유)RDS는 EC2의 보안 그룹에서 포트 3306 허용되어 있어야 함✅ 2. 로컬 포트포워딩 명령어 (Windows PowerShell 기준)ssh -i "your-key.pem" -L 3336:your-rds-endpoint.ap-southeast-2.rds.amazonaws.com:3306 ec2-user@your-e..
· Back-End/AWS
EC2 인스턴스를 중지(stop) 후 시작(start) 하면 퍼블릭 IP가 바뀐다.이때는 다음 3가지를 꼭 확인 및 수정해야 한다.🔧 1. ssh 접속용 IP 수정ssh -i "your-key.pem" ec2-user@예:ssh -i "your-key.pem" ec2-user@13.209.XX.XX※ 접속이 안 되는 경우:인스턴스 상태가 "running"인지 확인보안 그룹에 SSH(22번 포트)가 열려 있는지 확인 (내 IP 추가 필요할 수 있음)🔧 2. GitHub Actions 워크플로우에서 IP 수정.github/workflows/deploy.yml 파일 내에 하드코딩된 EC2 IP도 반드시 수정한다:- name: SSH and deploy run: | ssh ec2-user@ ⬇ 바뀐 ..
· Back-End/AWS
이번 글에서는 Spring Boot 백엔드 프로젝트를 AWS EC2에 Docker로 배포하고, GitHub Actions로 자동화 배포(CI/CD)를 구성하는 전체 과정을 자세하게 정리합니다.✅ 목표Spring Boot 애플리케이션을 Docker 이미지로 빌드하여 EC2에 배포GitHub에 main 브랜치 푸시 시 자동으로 빌드 & 배포되도록 구성RDS(MySQL) 연동 포함📌 사전 준비AWS EC2 인스턴스 (Amazon Linux 2023)AWS RDS(MySQL 8.x)GitHub 레포지토리Spring Boot 프로젝트 + Dockerfile로컬에 SSH 키 쌍 생성 (자동화용, GitHub Actions용)1️⃣ EC2 인스턴스 생성 및 기본 설정1-1. EC2 인스턴스 생성Amazon Linu..
· Back-End/AWS
Spring Boot 프로젝트를 AWS EC2 서버에 배포할 때,application.yml 파일은 GitHub에 커밋하지 않고,로컬에서 직접 EC2로 안전하게 전송해야 합니다.✅ 전제 조건 (공통)항목설명EC2 인스턴스 실행 중퍼블릭 IP 확보 (예: 13.239.xxx.xxx)PEM 키 파일 있음EC2 생성 시 다운로드한 .pem (예: your-key.pem)Git clone 완료EC2 내에 프로젝트 디렉토리 존재application.yml 존재로컬에서 직접 만든 파일 (예: src/main/resources/application.yml) 🖥️ Windows에서 scp로 전송하는 방법📍 PowerShell 또는 Git Bash 실행 후 아래 명령어 입력: scp -i "C:/경로/to/your-..
· Back-End/AWS
AWS EC2 인스턴스를 생성하고 나면, 외부에서 해당 서버에 접속해야 합니다.이 글에서는 Windows PowerShell과 macOS 터미널에서 .pem 키 파일을 사용하여EC2에 접속하는 방법을 자세히 설명합니다.🛠 준비물AWS에서 생성한 EC2 인스턴스EC2 생성 시 함께 받은 .pem 키 파일 (예: your-key.pem)EC2의 퍼블릭 IP 주소 또는 퍼블릭 DNS🖥 Windows PowerShell에서 EC2 접속하기✅ 1. 키 파일 권한 설정PowerShell 실행 후:icacls "C:\경로\ your-key .pem" /inheritance:r icacls "C:\경로\ your-key.pem" /grant:r "현재사용자계정:R" "현재사용자계정"은 whoami 명령어로 확인 가..
· Back-End/JPA
"조회는 무조건 DTO로 해야 할까?""fetchJoin을 언제 써야 하지?"실무에서 JPA를 쓰다 보면 조회 API를 어떻게 설계할지 고민이 많아집니다.이 글에서는 **JPA 엔티티 연관관계 설정(LAZY vs EAGER)**과 함께DTO select vs fetchJoin을 어떤 기준으로 선택해야 할지 정리해보겠습니다.⚙️ 1. 엔티티 연관관계 매핑 기본 설정JPA에서 엔티티 간 관계를 설정할 때 기본 전략은 다음과 같습니다.✅ OneToMany / ManyToOne@ManyToOne(fetch = FetchType.LAZY)@JoinColumn(name = "category_id")private Category category;@ManyToOne(fetch = FetchType.LAZY)@JoinC..
· Back-End/JPA
✅ EAGER vs LAZY 간단 정리로딩 전략설명EAGER엔티티 조회 시 연관 객체도 무조건 즉시 함께 로딩LAZY엔티티 조회 시 연관 객체는 프록시만 생성 → 필요할 때 쿼리 실행🚫 그럼 왜 EAGER는 실무에서 지양할까?⚠️ 1. 원치 않는 쿼리가 나감EAGER는 엔티티를 조회할 때 무조건 연관 객체를 함께 select함→ 상황에 따라 필요 없는 쿼리도 같이 실행됨예:Record record = recordRepository.findById(1L).get(); → 그런데 category, emotion이 EAGER면→ 내부적으로 다음과 같은 쿼리가 자동으로 나감:select * from record where id = 1; select * from category where id = ...; se..
· Back-End/JPA
🔥 CascadeType 완벽 정리📚 CascadeType 종류와 의미1. CascadeType.PERSIST java@OneToMany(cascade = CascadeType.PERSIST)private List orderItems;// 동작 예시Order order = new Order();order.addItem(new OrderItem("상품1")); // 새로운 OrderItementityManager.persist(order); // ✅ OrderItem도 자동 저장의미: 부모 저장 시 자식도 자동 저장2. CascadeType.MERGE java@OneToMany(cascade = CascadeType.MERGE)private List orderItems;// 동작 ..
· Back-End/JPA
📌 OSIV란 무엇인가?**OSIV(Open Session In View)**는 Spring Boot에서 기본적으로 활성화되어 있는 기능으로, HTTP 요청이 시작될 때부터 응답이 완료될 때까지 JPA 영속성 컨텍스트(EntityManager)를 열어두는 전략입니다.OSIV의 동작 방식# Spring Boot 기본 설정 (OSIV 활성화)spring: jpa: open-in-view: true # 기본값// OSIV가 켜져있을 때의 동작@GetMapping("/api/orders")public List getOrders() { List orders = orderService.findAll(); // 🎯 여기서도 지연 로딩 가능! (OSIV 덕분) return order..
1. 서론회사 프로젝트를 진행하다 jar파일 내부의 class파일을 디컴파일 후 수정한 뒤, 다시 jar로 만들어야하는 일이 발생했다.디컴파일은 jd-gui프로그램으로 진행했고 디컴파일된 자바파일을 IDE에서 수정 후 다시 jar로 만들어야 했다.여러 자료를 찾아보았지만 전부 기존 META-INF 폴더 외에도 새로운 폴더가 생성되었으나 아래 명령어대로 진행하니 기존 폴더구조를 유지하면서 JAR파일을 생성할 수 있었다. 2. 명령어jar로만들폴더경로>jar -cvf output.jar *
dev1song
'Back-End' 카테고리의 글 목록