e-commerce 웹 애플리케이션을 구현하던 중 가장 빈번하게 요청되면서도 거의 동일한 응답을 반환할 '단일 가게 조회' 기능에 Redis 캐싱을 적용하여 1) 정보 조회 속도를 높이고, 2) DB의 부하를 낮추는 것을 목표로 프로젝트를 진행했다.☆ 코드 ☆// build.gradle// Redisimplementation 'org.springframework.boot:spring-boot-starter-data-redis' // common/RedisRepositoryConfig.java@Configuration@EnableRedisRepositories(basePackages = "com.example.baglemonster.common.config")public class RedisReposito..
CS
[ 간단 정리 ] 물리 계층 : 리피터, 허브, 케이블 데이터링크 계층 : 브릿지, 라우터 네트워크 계층 : 라우터 응용 계층 : 게이트웨이 ● OSI 계층별 네트워크 장비 1. 물리 계층 리피터 (Repeater) - 하나의 네트워크 망 안에서 전기 신호를 재생하고 증폭시키는 역할을 수행합니다. 케이블 (Cable) - 물리적으로 전기신호를 전송하는 케이블 2. 데이터링크 계층 브릿지 (Bridge) - 하나의 네트워크망 안에서 서로 다른 LAN을 연결합니다. - MAC 주소 기반 필터링 기능을 통해 더 나은 대역폭을 제공하고, 트래픽을 통제합니다. - MAC 주소 기반 리피터 기능을 제공합니다. 스위치 (Switch) - 목적지의 MAC 주소를 가지고 있는 포트에만 프레임을 전송합니다. - 브릿지와 ..
·CS
4. JWT (JSON Web Token) * JWT 구조와 장단점 JWT는 웹에서 사용자 인증을 위해 JSON 형식으로 암호화된 토큰을 의미합니다. header, payload, signature로 구성되며, 기존 세션 방식과는 다르게 stateless하다는 특징이 있습니다. Payload는 JSON 형식의 데이터로, 토큰을 누가 누구에게 발급했는지, 언제까지 유효한지 등의 정보를 담고 있으며 이렇듯 토큰에 담긴 사용자 정보 등의 데이터를 Claim이라고 합니다. Header와 Signature는 payload 변조를 막기 위해 존재하며 header에는 토큰의 타입과 알고리즘 종류, signature에는 토큰의 헤더, 그리고 서버에 감춘 비밀 값으로 암호화한 값을 저장합니다. JWT 방식은 세션과 다르..
·CS
1. 쿠키 (Cookie) 쿠키는 사용자를 기억하기 위해 서버가 사용자의 브라우저에 저장하는 데이터(작은 기록 정보 파일)입니다. * 쿠키 동작 원리 HTTP의 일종으로 사용자가 특정 웹 사이트를 방문할 경우, 1) 클라이언트가 페이지를 요청(request)하면 (사용자의 웹 사이트 접근) 2) 웹 서버는 쿠키를 생성하여 정보를 담아 클라이언트에게 응답(response)합니다. 3) 응답 받은 쿠키는 클라이언트 PC에 저장되며, 다시 서버에 요청 시 요청과 함께 쿠키를 전송합니다. 4) 동일 사이트 재방문 시 클라이언트의 PC에 해당 쿠키가 있는 경우, 요청 페이지와 함께 쿠키를 전송합니다. * 쿠키 특징 1) 이름, 값, 만료일, 경로 정보로 구성되어 있습니다.. 2) 클라이언트는 총 300개의 쿠키를..
원인 분석 대용량 트래픽은 주로 평소 사용량을 넘는 사용자 로그인, DB 쿼리 요청 등 다양합니다. 만약 이를 처리하지 않고 방치한다면 서버 부하와 데이터베이스 부하 모두 증가하여 결국엔 서비스의 성능이 저하되고 서버 다운타임으로 인한 처리 지연 등의 문제가 발생할 수 있습니다. 대응책 1. 로드 밸런서와 오토 스케일링 그룹 로드 밸런서는 트래픽을 여러 서버로 분산시켜 서버 부하를 분담하는 중요한 도구로, 이를 통해 사용자 요청이 분산되어 특정 서버가 과부하되는 일을 방지할 수 있습니다. AWS의 Elastic Load Balancing (ELB)은 이러한 기능을 제공하여 서버 확장성을 높이고 더 많은 사용자 트래픽을 처리할 수 있도록 지원합니다. 오토 스케일링 그룹을 통해 서버 인스턴스의 수를 자동으로..
더보기본 게시글은 프로세스와 쓰레드의 차이를 바탕으로 멀티 프로세스와 멀티 쓰레드의 차이 그리고 그 쓰임새에 대해 정리하기 위한 목적으로 작성된 글입니다. 프로세스와 스레드프로세스는 여러 응용 프로그램이 독립적으로 실행되는 것을 의미합니다. 예를 들어, 웹 브라우저를 실행하면 각 탭은 별도의 프로세스로 실행됩니다. 스레드는 프로세스 내에서 실행되는 여러 실행 흐름으로, 하나의 프로그램 내에서 여러 작업을 동시에 처리할 수 있게 합니다. 예를 들어, 웹 브라우저가 여러 탭에서 동시에 여러 작업을 처리할 때 쓰레드가 사용됩니다. 멀티 프로세스와 멀티 스레드멀티 프로세스는 여러 프로세스가 동시에 실행되는 것을 의미합니다. 서버에서 여러 클라이언트 요청을 동시에 처리할 때 각 클라이언트 요청을 별도의 프로세스로..
일반적으로 SpringBoot의 인증/인가 필터를 JWT에 기반하여 구현합니다. 하지만, 한번 발행된 JWT의 유효 시간을 자체적으로 만료시킬 방법이 없다는 보안 상의 취약점을 해결하기 위해 JWT와 함께 언급되는 것이 Refresh Token입니다. Refresh Token을 구현하기 위한 참고한 모든 블로그들은 한결 같이 Redis를 통해 구현하는 것을 확인했습니다. 해당 게시글은 Redis의 특징을 통해 그 이유를 파악하고 그로 인해 얻을 수 있는 장점에 대한 내용으로 구성되었습니다. Redis의 특징1. 속도와 성능Redis는 메모리 기반 데이터 저장소로, 빠른 속도와 높은 성능을 제공합니다.이는 Refresh Token 같은 인증 데이터를 빠르게 읽고 쓸 수 있어 애플리케이션의 응답 시간을..
inode란? Linux는 파일 시스템 내부의 모든 파일과 디렉토리에 index node(inode)를 할당해야 하는데 실제 데이터를 저장하진 않습니다. 대신, 각 파일 데이터의 스토리지 블록들을 찾을 수 있는 메타 데이터를 저장합니다. inode에 담긴 메타데이터 유형 파일 타입 파일 권한 (permissions) 파일 크기 Owner ID Group ID 마지막 접근 시간 마지막 수정 시간 Soft / Hard 링크 접근 제어 목록 (Access Control List, ACLs) inode의 기본 구조 파일 시스템의 전체 정보를 가진 슈퍼 블럭 각 파일의 상세 정보를 가진 inode 블럭 실제 데이터를 담은 데이터 블럭 inode 블럭의 구조 1) Mode, Owner Info, Size, Time..
1. 리눅스 파티션 ◈ 디렉터리 저장 위치 마운트 포인트 정의 비고 / 모든 디렉터리의 최상위 디렉터리 루트 파티션 /root 시스템관리자 root의 사용자 홈 디렉터리 /boot 부트 이미지 저장 디렉터리 부팅 커널 저장소 /bin 실행 파일 디렉터리 (ex. cd, cat ...) 기본 명령어 모음 /sbin 시스템 관리용 명령어 모음 ex. ifconfig /etc 각종 시스템 설정 파일 저장 디렉터리 시스템 환경 설정 관련 파일 모음 /home 사용자 홈 저장 디렉터리 사용자 별 공간 /lib 라이브러리 저장 디렉터리 프로그램 라이브러리 저장 /usr 리눅스 응용프로그램 설치 디렉터리 응용 프로그램이 주로 저장됨 /usr/local 사용자 소스 컴파일하여 프로그램 설치 /var 메일 로그 관련, ..
더보기 본 게시글은 간략히 알고 간략히 설명했던 DNS에 대해 이해하기 위해 작성한 글로, Cloudflare의 공식 자료를 참고했다. DNS가 뭘까 DNS는 Domain Name Server의 약자로, ogig0818.tistory.com 같은 도메인 이름을 통해 온라인으로 정보에 액세스합니다. 웹 브라우저는 인터넷 프로토콜(IP) 주소를 통해 상호작용하며, DNS는 브라우저가 인터넷 자원을 로드할 수 있도록 도메인 이름을 IP 주소로 변환합니다. 인터넷에 연결된 각 기기에는 다른 컴퓨터가 기기를 찾는 데 사용하는 고유한 IP 주소가 있습니다. DNS 서버는 사람이 192.168.0.1 (IPv4의 경우) 또는 2400:cb00:2048:1::c629:d7a2 (IPv6의 경우)처럼 영문과 숫자로 된 ..