CS

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..
더보기 본 게시글은 개발자 상식인 MVC 패턴에 대한 글로, MDN의 공식 문서를 참조했습니다. MVC (모델-뷰-컨트롤러) 는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴으로 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있습니다. 이러한 "관심사 분리"는 더 나은 업무의 분리와 향상된 관리를 제공합니다. MVC에 기반을 둔 다른 디자인 패턴으로는 MVVM (모델-뷰-뷰모델), MVP(모델-뷰-프리젠터), 그리고 MVW(모델-뷰-Whatever)가 있습니다. MVC 소프트웨어 디자인 패턴은 다음의 세 부분으로 설명할 수 있습니다. 모델 : 데이터와 비즈니스 로직을 관리합니다. 뷰 : 레이아웃과 화면을 처리합니다. 컨트롤러 : 모델과 뷰로 명령을..
·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개의 쿠키를..
·CS/운영체제
더보기본 게시글은 프로세스와 쓰레드의 차이를 바탕으로 멀티 프로세스와 멀티 쓰레드의 차이 그리고 그 쓰임새에 대해 정리하기 위한 목적으로 작성된 글입니다. 프로세스와 스레드프로세스는 여러 응용 프로그램이 독립적으로 실행되는 것을 의미합니다. 예를 들어, 웹 브라우저를 실행하면 각 탭은 별도의 프로세스로 실행됩니다. 스레드는 프로세스 내에서 실행되는 여러 실행 흐름으로, 하나의 프로그램 내에서 여러 작업을 동시에 처리할 수 있게 합니다. 예를 들어, 웹 브라우저가 여러 탭에서 동시에 여러 작업을 처리할 때 쓰레드가 사용됩니다. 멀티 프로세스와 멀티 스레드멀티 프로세스는 여러 프로세스가 동시에 실행되는 것을 의미합니다. 서버에서 여러 클라이언트 요청을 동시에 처리할 때 각 클라이언트 요청을 별도의 프로세스로..
일반적으로 SpringBoot의 인증/인가 필터를 JWT에 기반하여 구현합니다. 하지만, 한번 발행된 JWT의 유효 시간을 자체적으로 만료시킬 방법이 없다는 보안 상의 취약점을 해결하기 위해 JWT와 함께 언급되는 것이 Refresh Token입니다.  Refresh Token을 구현하기 위한 참고한 모든 블로그들은 한결 같이 Redis를 통해 구현하는 것을 확인했습니다. 해당 게시글은 Redis의 특징을 통해 그 이유를 파악하고 그로 인해 얻을 수 있는 장점에 대한 내용으로 구성되었습니다.   Redis의 특징1. 속도와 성능Redis는 메모리 기반 데이터 저장소로, 빠른 속도와 높은 성능을 제공합니다.이는 Refresh Token 같은 인증 데이터를 빠르게 읽고 쓸 수 있어 애플리케이션의 응답 시간을..
·CS/운영체제
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..
·CS/운영체제
1. 리눅스 파티션 ◈ 디렉터리 저장 위치 마운트 포인트 정의 비고 / 모든 디렉터리의 최상위 디렉터리 루트 파티션 /root 시스템관리자 root의 사용자 홈 디렉터리 /boot 부트 이미지 저장 디렉터리 부팅 커널 저장소 /bin 실행 파일 디렉터리 (ex. cd, cat ...) 기본 명령어 모음 /sbin 시스템 관리용 명령어 모음 ex. ifconfig /etc 각종 시스템 설정 파일 저장 디렉터리 시스템 환경 설정 관련 파일 모음 /home 사용자 홈 저장 디렉터리 사용자 별 공간 /lib 라이브러리 저장 디렉터리 프로그램 라이브러리 저장 /usr 리눅스 응용프로그램 설치 디렉터리 응용 프로그램이 주로 저장됨 /usr/local 사용자 소스 컴파일하여 프로그램 설치 /var 메일 로그 관련, ..
·CS/Container
더보기본 게시글은 컨테이너의 특징을 좀 더 잘 이해하기 위해 주로 비교되는 VM과 나열하여 특징을 비교하기 위한 글로,AWS의 공식 자료를 참고했습니다.컨테이너와 가상 머신의 차이점컨테이너와 가상 머신은 애플리케이션을 IT 인프라 리소스로부터 독립적으로 만드는 기술입니다. 컨테이너는 애플리케이션의 코드, 라이브러리 및 기타 종속 구성 요소를 포함하는 소프트웨어 코드 패키지로, 컨테이너화를 통해 애플리케이션을 이동 가능하도록 만들어 모든 디바이스에서 동일한 코드를 실행할 수 있습니다. 가상 머신은 물리적 머신의 디지털 사본으로, 동일한 호스트 운영 체제에서 고유한 개별 운영 체제가 실행되는 여러 가상 머신을 보유할 수 있습니다. 또한 애플리케이션을 실행하는 데 필요한 모든 것이 포함된 가상 머신을 생성할 ..
·CS/Container
더보기본 게시글은 개발 직군 면접의 단골 주제인 컨테이너에 대한 답변을 준비하기 위한 글로Red Hat의 공식 자료(링크)를 참고했습니다. 애플리케이션의 복잡성이 증가하고 애플리케이션 개발 가속화에 대한 요구가 점차 증가함에 따라 인프라, IT 팀, 프로세스에 대한 요구가 증가했습니다. 컨테이너는 위의 문제들을 완화하고 반복 작업 가속화를 지원합니다. 컨테이너란?컨테이너는 실행에 필요한 모든 파일을 포함한 전체 실행(runtime) 환경에서 애플리케이션을 패키징하고 격리할 수 있는 기술입니다. 이를 통해 전체 기능을 유지하면서도 컨테이너화된 애플리케이션을 환경(개발, 테스트, 프로덕션 환경 등) 간에 쉽게 이동할 수 있습니다.컨테이너는 IT 보안의 중요한 부분이기도 한데, 컨테이너 파이프라인에 보안을 구..