💻[백엔드]

1. Docker Compose로 Redis, Spring Boot 한 번에 띄울 수 있게 구성하기구성에 필요한 파일 만들기a. Dockerfile17-jdk에서 빌드한 파일을 복사해 실행시키는 Docker 이미지FROM openjdk:17-jdkCOPY build/libs/*SNAPSHOT.jar app.jarENTRYPOINT ["java", "-jar", "/app.jar"] b. compose.ymlDockerfile을 기준으로 서버를 빌드함 (포트는 8080)캐시 서버(Redis)가 정상적으로 실행되고 있다는 걸 확인한 뒤에 백엔드 서버를 띄울 것임 (캐시 서버가 안 띄워져 있으면 오류 표시)services: api-server: build: . ports: - 8080:8..
1. 내가 구성한 백엔드 서버는 1초당 몇 개의 요청을 견딜 수 있을까?부하 테스트의 기본 개념백엔드 서버를 구현하고 나서 배포를 하게 될 경우 요청이 몰려서 서버가 터질까 봐 불안하다거나 내 서버가 어느 정도의 사용자 요청을 견딜 수 있는지 궁금해질 수도 있음이런 불안감을 없애기 위해 서비스를 배포하기 전, 백엔드 서버가 어느 정도의 요청을 견딜 수 있는지 부하 테스트를 해봐야 함 부하 테스트실제 사용자인 척 요청을 막 보내서, 여러 사용자가 한 번에 몰리는 상황을 가정하여 많은 트래픽인 것처럼 서버에 때려보는 것Throughput(처리량)서비스가 1초당 처리할 수 있는 작업량으로, 단위는 TPS(Transaction Per Second, 1초당 처리한 트랜잭션의 수) 우리가 구축한 서비스의 Throu..
EC2, RDS, Spring Boot, Redis를 활용한 아키텍처 구성은 아래와 같다.  1. EC2 생성서울 리전으로 맞추기 & 인스턴스 시작 버튼 클릭 인스턴스 이름 설정 애플리케이션 및 OS 이미지 → Ubuntu (버전 24.04)로 설정 인스턴스 유형은 t3a.small 이상으로 생성할 것을 권장함프리티어인 t2.micro에서 Spring Boot, Redis를 다 돌리기엔 성능이 모자라기 때문에 중간에 EC2가 멈춰버리기도 함 원래는 키페어를 생성해서 셋팅을 해야 하지만, Redis만 연결시켜 보고 테스트 후 바로 종료시킬 것이기 때문에 [키 페어 없이 계속 진행(권장되지 않음)]을 선택서비스를 하는 입장이라면 키 페어를 만드는 걸 추천 네트워크 설정 → 편집 클릭VPC는 기본값 그대로 셋..
1. Spring Boot 프로젝트에 Redis 셋팅 추가하기Redis 의존성 추가하기build.gradle에 아래 코드를 추가하고 gradle 새로고침 버튼을 눌러야 갱신한 의존성이 반영된다.dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-data-redis'} application.yml 수정하기# local 환경spring: profiles: default: local datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: password driver-class-name: com.mysql.cj..
1. 캐시(Cache), 캐싱(Caching)이란?캐시(Cache)원본 저장소보다 빠르게 가져올 수 있는 임시 데이터 저장소를 의미한다. 원본 데이터베이스에 접근해 데이터를 가져오는 건 시간이 오래 걸린다. 보통 최근 접근한 페이지 등이 다시 접근될 확률이 높기 때문에 속도가 빠르거나 사용자와 거리가 가까운 임시 저장소를 두고, 최근에 접근한 이미지나 파일 등의 데이터를 빨리 가져올 수 있게끔 하는 게 좋다. 예를 들어 크롬 같은 검색 도구에서도 방문한 페이지에 있던 이미지나 파일 등을 캐시(저장)해놓고 해당 페이지 재방문 시 캐시된 이미지 및 파일을 불러와 빠르게 페이지가 뜰 수 있도록 한다. 캐싱(Caching)캐시(임시 데이터 저장소)에 접근해 데이터를 빠르게 가져오는 방식을 의미한다. 예를 들어 ..
1. 로컬(Windows)에서 Redis 설치하기 아래 링크로 들어가 확장자가 msi인 설치 프로그램을 다운로드하여야 한다.https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redisgithub.com  설치 과정에서 딱히 따로 설정할 것은 없다.Redis의 기본 포..
1. RedisRedis란?Redis 공식 홈페이지 문서를 살펴보면 아래와 같은 설명이 적혀 있다.Redis is an in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, and message broker. Redis has built-in replication and different levels of on-disk persistence. It supports complex data types (for example, strings, hashes, lists, sets, sorted sets, and JSON), with atomic operat..
스프링이 제공하는 빈이 존재할 수 있는 범위에 대한 섹션! 1. 빈 스코프란?빈 스코프는 빈이 존재할 수 있는 범위를 말함스프링 빈은 기본적으로 싱글톤 스코프로 생성되기 때문에 스프링 컨테이너의 시작과 함께 생성돼서 스프링 컨테이너가 종료될 때까지 유지됨아래와 같이 지정할 수 있음// 컴포넌트 스캔 자동 등록@Scope("prototype")@Componentpublic class HelloBean() {}// 수동 등록@Scope("prototype")@BeanPrototypeBean HelloBean() { return new HelloBean();} 스프링이 지원하는 다양한 스코프a. 싱글톤 스코프(default)기본값으로, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 b. ..
스프링을 통해 객체의 초기화 작업과 종료 작업을 어떻게 진행하는지 알아보는 섹션! 1. 빈 생명주기 콜백스프링 빈의 라이프사이클a. 객체 생성 → 의존관계 주입스프링 빈은 객체를 생성하고 의존관계 주입이 다 끝난 다음에야 필요한 데이터를 사용할 준비가 됨Q. 객체 초기화 작업은 의존관계 주입이 모두 끝난 다음에 호출해야 하는데, 개발자가 의존관계 주입이 모두 끝난 시점을 확인할 수 있을까?A. 스프링은 의존관계 주입이 모두 끝나면 스프링 빈에게 콜백 메서드를 통해 초기화 시점을 알려주는 다양한 기능을 제공하고, 스프링 컨테이너가 종료되기 직전 소멸 콜백을 통해 안전하게 종료 작업을 진행할 수 있도록 함 b. 스프링 빈의 이벤트 라이프사이클스프링 컨테이너 생성 → 스프링 빈 생성 → 의존관계 주입 → 초기..
1. 의존관계 주입 방법생성자 주입생성자를 통해 의존관계를 주입 받는 방법@Componentpublic class OrderServiceImpl implements OrderService { private final MemberRepository memberRepository; private final DiscountPolicy discountPolicy; @Autowired // 생성자가 1개이므로 생략해도 자동 주입 가능 public OrderServiceImpl(MemberRepository memberRepository, DiscountPolicy discountPolicy) { this.memberRepository = memberRepository; ..
dev-meung
'💻[백엔드]' 카테고리의 글 목록 (4 Page)