[Java] JDBC 동작 원리와 커넥션 풀 이해하기
·
🛠️Backend/☕Java
✅ 1. JDBC(Java Database Connectivity) 란?자바에서 데이터베이스에 접속하고 SQL을 실행해서 결과를 가져오는 기능을 제공하는 Java API 이다.쉽게말해, 자바 애플리케이션과 데이터베이스 사이의 연결 통로 역할을 해준다고 보면 된다.JDBC 는 Java API 로써, JRE에 포함이 되어있으며, 해당 인터페이스 집합들을 데이터베이스(MySQL, Oracle, PostgreSQL 등) 이 해당 자바 인터페이스를 구현해 본인의 데이터베이스에 접근 할 수 있도록 클래스를 만들어 주게 된다. 해당 클래스를 라이브러리로 받아서 이용을 하게 되면, 해당 클래스와 맞는 데이터베이스와 연결을 할 수 있게 된다.참고로 해당 API 는 java.sql 또는 javax.sql 등의 패키지로 제..
[Spring Framework] 스프링 비동기 처리 방법
·
🛠️Backend/🌳Spring
✅ 1. 비동기(Asynchronous) 란?1. 클라이언트 요청2. 워커 스레드 클라이언트 요청 처리3. 동작 중 비동기 로직 발견4. 워커 스레드를 하나 더 만들어서 비동기 로직을 처리5. 요청 처리 및 비동기 처리 스레드 두개가 돌아가게 됨.6. 스케줄러의 의해 따로 동시의 동작을하게 됨.어떤 작업을 요청한 후 그 작업의 완료 여부를 기다리지 않고 다음 작업을 바로 수행하는 방식을 의미한다.보통 구현은 요청 하나 스레드에서 분기되어 동시에 다른 작업도 처리하는 과정이라고 볼 수 있음.✅ 2. Spring 에서 비동기(Asynchronous) 처리✅ @EnableAsync가 하는 일 요약 ( 애너테이션 사용시 내부 동작 )AsyncAnnotationBeanPostProcessor 등록→ @Async ..
[Spring WebSocket] 스프링에서 웹 소켓 동작
·
🛠️Backend/🌳Spring
✅ 1. 스프링과 서블릿 관계Spring Web MVC 는 서블릿 API 를 기반으로 만들어져 있으며, 내부적으로 DispathcerServlet 으로 서블릿을 구현해서 이용한다. 따라서 이를 실행하기 위해서는 서블릿 컨테이너가 필요하며, 그 서블릿 컨테이너 역할을 Tomcat, Jetty, Undertow 와 같은 미들웨어가 해준다. 이 미들웨어는 모두 자바 코드로 구현이 되어있으며, DispatcherServlet 을 구동시킬 수 있다.자바에서 실행은 모두 자바 애플리케이션을 실행시키는 것이다. 즉, Tomcat 과 같이 미들웨어들이 자바로 만들어져 있는 스프링 웹 애플리케이션을 서버로 만들어주는 구조이다.✅ 2. Tomcat 내부 동작스프링이 실행되는 시점에 내장 되어있는 미들웨어인 Tomcat 이..
[Spring Framework] Servlet API, HttpServlet, DispatcherServlet, Tomcat 알아보기
·
🛠️Backend/🌳Spring
✅ 1. Servlet API 란?package jakarta.servlet;import java.io.IOException;public interface Servlet { void init(ServletConfig var1) throws ServletException; // Servlet 생성 ServletConfig getServletConfig(); // 요청을 받아 처리하는 핵심 메서드 void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException; String getServletInfo(); void destroy(); // Servlet 삭제}서블릿은 자바 기..
[Spring Framework] HttpServletRequest - HTTP 메시지 값 담기는 과정 (요청)
·
🛠️Backend/🌳Spring
SpringBoot 내장 서버는 Tomcat이며, 해당 Tomcat은 WAS로 불리며, 요청과 응답을 주고 받는 미들웨어로 불린다.Tomcat은 HttpServletRequest 인터페이스를 구현한 클래스를 제공해준다.즉, 요청이 들어오면 HttpServletRequest 인터페이스를 구현한 클래스에 요청의 대한 값이 담기게 된다.✅ 1. HttpServletRequest [ interface ]package jakarta.servlet.http;public interface HttpServletRequest extends ServletRequest { // ... 여러 HTTP 관련 메서드들이 추상메서드로 정의되어 있음.}자바의 표준 API 인 Servlet API 의 일부이다. 즉, 자바 표준 ..
[Backend] 성능 최적화란?
·
🛠️Backend/📚백엔드 공부
성능 최적화란?서버에 트래픽이 몰릴 때 빠르고 안정적인 서비스를 제공하기 위해 성능을 개선하는 작업을 의미한다.즉, 클라이언트가 서버에 요청을 보내고 응답을 보내는 과정에서 더 빠르고 안정적인 서비스 제공을 위해서이다.서버는 결국 네트워크를 통해 통신을 하며, 이 과정에서 볼 수 있는 대표적인 최적화는 3가지가 있다.🧱1. 하드웨어 최적화 (Infastructure 측면)스케일 업: CPU, 메모리, 디스크 등 한 대의 서버 사양을 업그레이드. 스케일 아웃: 서버의 수를 늘려 부하를 분산 (수평 확장).Auto Scaling, Load Balancer(HW) 도 여기에 포함.예시: EC2 인스턴스 타입 변경, 서버 개수 증가담당: 인프라 엔지니어, 클라우드 엔지니어🌐 2. 네트워크 최적화 (OSI 계..
스파르타코딩클럽 - 2024년 Spring 백엔드 과정 수료 후기
·
⛺스파르타코딩클럽
글쓴이는 내일배움캠프 Spring 백엔드 과정을 2024년 4월 중순에 시작하여, 8월말에 학원을 수료함. 1. 진행 과정내가 했던 기수 시간표 기준 4개월간 매일 오전9시 - 오후9시 (12시간 진행) (1) Git-Hub 기초(2) 웹 개발 기초 ( HTML, CSS, JavaScript ) 및 웹 페이지 미니 팀프로젝트 진행, 발표(3) 자바 기초 및 팀 과제 발표(4) 스프링 기초 및 팀 과제 발표(5) 스프링 일반 및 팀 과제 발표 ( Spring Security , JWT )(6) 스프링 심화 및 팀 과제 발표(7) JPA 및 팀 과제 발표 ( 여기까지 3개월 걸림 )(8) 최종프로젝트 및 발표2. 난이도완전 처음 하는 사람 기준으로는 난이도가 다소 높다고 느낌.( 처음하는 사람이라면 최소, ..
[Deploy] Spring & MySql & docker-compose 활용 EC2에 간단하게 배포하기
·
🚀DevOps
배포 전 알아야 할 사항- 이 과정은 EC2에 Docker 및 Docker Compose를 설치하는 작업과 EC2 내부에 Docker를 띄워서 Docker Compose를 활용해 Docker-Hub로 부터 image를 받아와 서버를 배포하는 작업을 담고 있음.- 새로운 AWS EC2 인스턴스 생성 (아무것도 없는 빈 클라우드 컴퓨터여야함 )- Docker-Hub에 계정을 만들어서 Spring 프로젝트를 Hub로 올릴 Repository를 만들어 둬야함.- Docker와 Docker Desktop이 로컬에 깔려 있어야 함.- spring 프로젝트에 env설정이 되어있어야함. env설정은 필수 ! 1. EC2) Docker 설치# 1. 프로그램 설치 전 우분투 시스템 패키지 업데이트$ sudo apt-get..
[Spring Data JPA] JPA Entity 클래스에 기본 생성자가 필요한 이유
·
🛠️Backend/🌳Spring
JPA 기본 생성자가 필요한 이유@PersistenceContextprivate EntityManager entityManager;public User getUser(Long userId) { User user = entityManager.find(User.class, userId); return user; // JPA가 내부적으로 기본 생성자를 호출하여 객체를 생성하고, 리플렉션을 통해 필드 값을 설정}해당 과정을 살펴 보면 entityManager.find 즉, 조회 과정에서 User.class 타입을 인자로 받고 있다.이 User.class 이 클래스 정보로 내부에 애너테이션이나 필드 생성자 등의 정보를 리플렉션을 통해 얻을 수 있게 된다.그러면 이 정보를 가지고 DB에 데이터를 조회할..
[Spring MVC] 요청과 응답에 대한 동작 원리
·
🛠️Backend/🌳Spring
목차 ● 1. 웹 서버 & 웹 애플리케이션 서버 ● 2. 스프링부트 환경 내장 서버 ● 1. 웹 서버란?1. 웹 서버 & 웹 애플리케이션 서버 웹 서버란?1. HTTP 프로토콜을 기반으로 클라이언트의 요청을 받아주고 정적인 리소스를 제공해주는 역할을 한다.2. 정확히는, 정적 리소스를 WAS에서 받아서 해석해서 클라이언트에게 전달해주는 역할을 한다. 웹 애플리케이션 서버란?1. 웹 서버가 존재해야지만 존재할 수 있는 서버이며, 동적인 컨텐츠를 제공해주기 위해 존재하는 서버이다.2. 동적인 컨텐츠로는 DB조회나 다양한 로직 처리 및 계산 등 처리를 해서 웹 서버로 전달을 해주는 역할을 한다.2. 스프링부트 환경 내장 서버 스프링부트는 웹 서버 & 웹 애플리케이션 서버를 합친 서버를 내..