분류 전체보기 239

Dockerfile이란?

Dockerfile Dockerfile은 Docker 이미지를 만들때 사용된다. DockerHub에는 mysql, nginx, node, openjdk등 다양한 사람들이 만들어 놓은 Docker 이미지가 존재한다. 하지만 내가 만든 프로젝트를 Docker를 이용해서 배포해야하는 경우 내 프로젝트를 Docker 이미지로 만들어야 한다.이럴때 Dockerfile을 사용하면 나만의 Docker이미지를 만들 수 있게 된다. Dockerfile의 구성 FROM만약 Spring Boot 애플리케이션을 Docker image로 생성할때를 예로 들어보자. 이 애플리케이션을 실행시키기 위해서는 다음과 같은 것들이 기본적으로 세팅되어 있어야 한다.운영체제JDK빌드툴(Gradle,Maven..)이러한 환경을 매번 직접 세팅..

Deployment/Docker 2025.08.28

Cloudflare를 사용하여 EC2 웹서버에 HTTPS 적용하기(2)

1. 도메인 구매 가비아에서 테스트용으로 'woohyeon.store'를 구입했다. 2. Cloudflare에 도메인 등록 도메인을 등록하고, 도메인에 대한 DNS관리에서 DNS 레코드를 수정해줘야 한다. 도메인과 EC2 서버를 연결하기 위해서 A레코드에 EC2의 Public IP 주소를 등록해준다.또한 'www.woohyeon.store'로 접속해도 'woohyeon.store'로 맵핑되도록 해주기 위해 CNAME 레코드에 이름을 www로 등록해준다.형식 : A, 이름 : 도메인, IPv4 주소 : EC2 인스턴스의 public IP주소형식 : CNAME 이름 : www 대상 : 도메인 3. SSL/TLS 등록SSL/TLS란 브라우저와 서버 간 통신을 암호화해주는 프로토콜이고, HTTPS로 접속할때 S..

[Redis] 캐싱을 이용한 간단한 성능 개선 테스트(Apache JMeter)

Redis 캐싱을 이용해 조회성능 테스트를 진행했다. 캐싱이란? 캐싱은 자주 사용하는 데이터를 임시 저장소(캐시)에 보관하여, 데이터 조회 속도를 높이고 시스템 부하를 줄이는 기술이다. 캐싱을 사용하게 되면 메모리에 저장된 데이터를 반환 함으로써 디스크 기반의 데이터베이스보다 빠르게 데이터를 불러올 수 있다는 장점이 있다. 이러한 캐싱 기술은 웹 서비스의 성능을 높일 수 있다는 장점이 있지만 무작정 사용한다면 오히려 성능 저하나 오류가 발생할 수 있다. 캐싱 전략 선택시 고려사항데이터의 변경 빈도 : 캐싱에 대상이 되는 데이터가 가변성이 높다면 캐시 데이터가 최신 데이터를 반영하고 있지 않을 수 있다. 또한 잦은 캐시 무효화와 재생성으로 인해 부하가 증가할 수 있다.데이터를 한번 쓰고 여러번 읽는 경우..

BackEnd/Redis 2025.08.25

Spring Boot + Redis를 활용한 Refresh Token 기능 구현

Access Token만 사용할때의 문제점 Access Token은 사용자 인증과 인가에 직접 사용되므로 상대적으로 짧은 만료 기간(30분 ~ 1시간)을 갖는다.이렇게 짧은 유효기간을 유지하는 이유는 토큰을 탈취당했을 경우 피해를 최소화 할 수 있기 때문이다.만약 Access Token의 유효 기간을 길게 설정하게 되면 탈취된 토큰을 활용할 수 있는 시간도 늘어나게 된다. 이렇게 Access Token의 짧은 유효기간은 보안상 좋은점도 있지만, 사용자가 자주 로그인을 해야 하는 불편이 있다.만약 짧은 유효기간의 Access Token만을 사용하게 되면 사용자가 서비스를 사용중에 갑자기 로그아웃 되거나 오류 메시지를 보게 되어 곤란한 상황이 생길 수 있다. Refresh Token의 활용 이러한 문제를 ..

BackEnd/Redis 2025.08.24

CORS란? Spring Boot에서 CORS 정책 설정

Origin이란?Origin은 출처를 의미한다. URL에서 Protocol, Host, Port가 같으면 동일한 Origin임을 의미한다. SOP(Same Origin Policy)만약 Origin이 다른 두 애플리케이션이 자유롭게 소통할 수 있게되면 보안상 치명적인 문제가 생길 수 있다.XSS(크로스 사이트 스크립팅), CSRF(사이트 요청 위조) 공격에 취약해질 수 있다. 따라서 같은 Origin만 끼리만 리소스를 공유할 수 있는 정책이 필요하다. 이 정책을 SOP(Same Origin Policy)라고 부른다. 하지만 다른 Origin에서의 요청을 허용해줘야 하는 경우도 존재한다.예를 들면 프론트엔드 서버에서 백엔드 서버로 요청을 보낼 경우 이 요청을 막아버린다면, 프론트엔드와 백엔드간 통신이 불가..

BackEnd/spring 2025.08.22

Redis DB서버 구성

Replication(복제) Master 노드는 쓰기(Write)작업을 처리하고, 여러 Slave노드가 Master 노드의 데이터를 복제하여 읽기 작업을 처리한다.읽기 요청을 여러 Slave 노드에 분산하여 트래픽 분산을 통해 처리 성능 향상Master 노드에 장애가 발생해도 Slave 노드들이 데이터를 가지고 있으므로 장애 복구에 좋다.Master는 쓰기, Slave는 읽기 작업을 담당하여 Master 노드의 부하 감소수평적 확장 가능 Redis 클러스터 구성최소 3개의 노드를 가지고 각 노드는 Master와 Slave 로 구성되어있다.데이터를 여러 노드에 분산하여 저장함으로써 고가용성과 확장성을 제공여러 노드에 데이터를 무작위로 분산 저장하면, 클라이언트가 어떤 노드에 특정 키가 저장되어 있는지 ..

BackEnd/Redis 2025.08.22

Redis(Remote Dictionary Server)란?

Redis란?Redis는 고성능의 키-값(key-value) 저장소로, 거대한 맵(Map) 데이터 저장소형태를 가지고 데이터를 메모리에 저장하여 빠른 읽기와 쓰기를 지원하는 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템이다. Redis의 특징 1. 고성능RDBS(Relational Database Management System)는 디스크 기반의 저장 방식을 사용한다.디스크 기반의 저장 방식은 메모리 저장 방식에 비해 데이터를 오래 보관할 수 있다는 장점이 있지만, 메모리에 있는 데이터를 조회하는 방식에 비해 처리 속도가 느리다는 단점이 있다. 반면 Redis는 데이터를 디스크에 쓰는 구조가 아니라, 메모리에서 데이터를 처리하기 때문에 속도가 매우 빠르다.또한 Redis도 필요시 디스크에 스냅샷 ..

BackEnd/Redis 2025.08.21

[Kafka] MSA 구조에서의 Kafka 사용

MSA(Microservice Architecture)란?MSA는 큰 애플리케이션을 여러 개의 작고 독립적인 서비스로 나누어 개발하고 운영하는 아키텍처이다. 각 서비스는 독립적으로 배포와 확장이 가능하고, 명확히 분리된 API로 통신을 하게 된다. MSA의 특징독립적으로 개발, 배포, 확장 가능API 기반의 통신으로 서비스 간 느슨한 결합 유지서비스 마다 서로 다른 언어나 기술 스택 사용 가능장애 격리 : 특정 서비스 장애가 전체 시스템에 영향 최소화 이러한 MSA와 같은 분산환경에서 Kafka가 유용하게 사용될 수 있다. 서비스간 직접 호출 대신 Kafka 메시지 큐를 통해 이벤트 기반의 통신을 통해 서로 의존성을 줄일 수 있고, 비동기 작업 처리로 응답속도를 향상시킬 수 있다. 또한 Kafka의 토..

BackEnd/Kafka 2025.08.19

프로그래머스 - 삼각 달팽이[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/68645 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해결 과정 이 문제에서 찾은 규칙은 다음과 같다.첫번째 삼각형에서 아래로 가는 이동 횟수는 n번, 그 다음 삼각형에서는 n-3번첫번째 삼각형에서 오른쪽으로 이동 횟수는 n-1번, 그 다음 삼각형에서는 n-3-1번첫번째 삼각형에서 대각선 위로 이동하는 횟수는 n-2번, 그 다음 삼각형에서는 n-3-2번아래 -> 오른쪽 -> 대각선 위 순서로 이동 후 len-3import java.util.*;class Solution { public int[]..

카테고리 없음 2025.08.18

프로그래머스 - 교점에 별 만들기[Java]

https://school.programmers.co.kr/learn/courses/30/lessons/87377?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 해결 이 문제에서 어려웠던 부분은 교점의 최대값 최솟값에 맞춰서 출력 배열을 조절하는 과정이었다. 교점의 x좌표 - x의 최솟값y의 최대값 - 교점의 y좌표이렇게 좌표를 변환 해줘서 각 교점의 최대값 최솟값에 맞춰서 배열의 크기를 조절해야한다. 또한 정수 좌표에 대해서만 별표를 넣어야 하기 때문에 정수임을 체크하는 방법은 1로 나누었을때 나머지가 0인가로 판별하였다.if(x%1.0 != 0 || y%1.0 != 0){ ..

알고리즘/배열 2025.08.18