1. Hello 서블릿프로젝트 환경Java: 21Spring Boot: 3.x.xDependencies: Spring Web, LombokPackaging: War → 주의: JSP를 실행하기 위해서 Jar 대신 War로 설정해야 한다.프로젝트를 생성한 뒤 [File - Setting]에서 [Annotation Processors]를 검색하고, Enable annotation processing 체크 (재시작)임의의 테스트 class를 만들고 @Getter 확인아래 사이트에서 OS에 맞는 Postman 다운로드 받고 설치하기 Download Postman | Get Started for FreeTry Postman for free! Join 30 million developers who rely on P..
💻[백엔드]
1. 웹 서버(Web Server), 웹 애플리케이션 서버(WAS - Web Application Server)브라우저에서 URL을 치면 인터넷을 통해 서버에 접근하고, 서버에서는 HTML을 만들어 클라이언트에 보낸다. 클라이언트와 서버가 요청과 응답을 할 때 모두 HTTP라는 프로토콜을 기반으로 동작한다. 모든 것을 HTTP 메시지에 담아 전송한다는 것이다. 웹 서버(Web Server)웹 서버(Web Server)는 HTTP를 기반으로 동작하는 서버로, 정적 리소스를 제공하고 기타 부가 기능을 갖고 있다. 정적 리소스란 정적(파일) HTML, CSS, JS, 이미지, 영상 등이 포함되며, 특정 사용자마다 다르게 보여줄 수가 없고 말 그대로 정적인 파일이라고 볼 수 있다. 대표적으로 Nginx와 Apa..
1. 현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유예시EC2에 MySQL을 직접 설치해서 DB 서버처럼 써도 괜찮지만, 직접 MySQL을 깔고 이것저것 설정하는 것보단 AWS RDS 서버(AWS에서 세팅해 놓은 DB 서버)를 사용하는 게 여러 가지 부가 기능도 사용할 수 있고 안정성도 높다. 현업에서 EC2에 Redis를 설치해서 쓰지 않고 ElastiCache를 쓰는 이유도 비슷하다. 현업에서 EC2에 Redis를 직접 설치하는 경우는 드물다. 일일이 Redis를 설치하고 세팅하고 관리하면서 확장까지 하려면 신경 쓸 게 생각보다 많다. 그러나 ElastiCache를 사용하면 세팅이나 확장을 쉽게 할 수 있고, 기본적인 모니터링 기능도 제공해 주며 장애가 날 가능성도..
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..