[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 클래스에 기본 생성자가 필요한 이유
·
🌳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 Framework] IoC 컨테이너 & Bean 개념 이해 하기
·
🌳Spring/🌱Spring Framework
1. IoC Container ( 스프링 컨테이너 )앞서 살펴본 IoC는 "제어의 역전", IoC Container에게 제어의 권한을 넘긴다고 설명을 했었다. IoC Container는 객체를 의존성 주입을 시켜주기 위한 객체들을 모두 컨테이너에 넣어서 보관을 하게 된다. 해당 컨테이너는 내부의 객체들을 관리합니다. 과정으로는 먼저 컨테이너에 의해 인스턴스화 되고, 인스턴스화 된 객체들은 의존성 주입이 자동으로 됩니다.이렇듯, IoC Container는 Bean(객체) 들을 관리하며, 자동으로 의존성을 주입해주는 역할을 한다. * IoC Container가 관리하는 객체들은 모두 Bean이다. - IoC 컨테이너는 자바의 객체로써 존재한다.- 대표적인 구현체로는 BeanFactory 와 이를 확장한 인터..
[Spring Framework] IoC & DI 개념 이해 하기
·
🌳Spring/🌱Spring Framework
1. IoC (Inversion of Control)Inversion of Control의 뜻은 "제어의 역전"이다. 여기서 말하는 제어는, 객체를 직접 생성하거나 찾는 방식에서 벗어나 Spring Framework의 IoC 컨테이너 에게 제어의 권한을 넘김으로써, IoC 컨테이너가 필요할 때 알아서 객체를 생성하고 필요한 의존성을 알아서 주입을 해주는 방식을 의미한다.- 객체의 제어를 외부에서 담당하게 한다는 폭 넓은 개념- IoC Container에게 제어 권한을 넘긴다는 개념 * IoC Container : Spring Framework가 의존성 주입을 자동을 해주기 위한 "Bean"들의 집합과 "Bean"들을 관리해주는 공간이다.* Bean : Spring Framework가 관리하는 객체들을 "..
[Spring Framework] Spring & Spring Framework 차이
·
🌳Spring/🌱Spring Framework
개요Spring과 Spring Framework 단어에 대해 명확한 차이를 알고 있어야 Spring Framework를 더욱 쉽게 이해를 할 수 있을 것 같다고 생각을 하여 이 글을 쓰게 되었음. 1. Spring 이란?Spring의 처음은 Spring Framework라는 이름으로 시작을 했지만, 시간이 지남에 따라 Spring Framework 기반 위에 다른 프로젝트들이 추가 되면서 Spring은 Spring Framework 및 다른 프로젝트들을 다 포괄하는 단어가 되었다.- Spring은 Spring Framework 기반으로 구축이 된 프로젝트들을 일컫는다.- Spring은 오픈소스이며, Spring 내의 모든 프로젝트 또한 오픈소스이다. 2. Framework 란?- 개발자가 애플리케이션을 ..
내일배움캠프 49일차 TIL - Spring Security 필터 순서에 따른 인가 문제
·
⛺스파르타코딩클럽
240626오늘의 학습    ●  SpringSecurity 자습 Spring Security를 이용하며 생긴 문제와 해결Security 설정에 requestMatchers().permitAll().anyRequest().authenticated() 메서드를 이용하면 인가 권한이 없이 넘어갈 수 있다고 들어 개인적으로 해석을하여 위의 빌더 방식의 메서드를 호출하면 SecurityFilterChain에 들어있는 Filter들을 모두 건너뛰어 바로 Controller로 넘어가는 줄 알았지만, FilterChain 내부에 커스텀한 JwtAuthorizationFilter에 토큰 검증 메서드를 수행한다는 사실을 알게되었다. 결국 SecurityFilterChain의 Filter를 탄다는 사실을 알게되었고, 그럼..
내일배움캠프 35일차 TIL - Enum
·
⛺스파르타코딩클럽
240605오늘의 학습     ●  1. Enum    ●  2. 팀 프로젝트 게시글 기능 구현 Enum( 열거타입 )자바 1.5버전부터 새롭게 추가된 기능이며, 자바에서 Enum은 한정된 값들의 집합상수들의 집합을 의미한다.Enum은 Enumeration의 약자이며, Enumeration은 열거형이라고 부르며 목록, 알림표와 같은 의미를 가지고 있다.Enum은 열거타입이며, 열거타입은 데이터 중에 한정된 값을 갖는 데이터를 열거타입이라고 한다.즉, 한정된 값은 상수를 의미하며, 한정되어 있으므로 데이터의 변경이 있어서는 안된다는 규칙이 존재한다.ex) 월, 화, 수, 목, 금, 토, 일 ( 7개 ) / 봄, 여름, 가을, 겨울 ( 4개 ) Enum 열거형열거타입은 참조 타입이므로 null값으로 초기화가..