![[Redis] 캐싱 전략](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbyZo8Q%2FbtsJwchnVvc%2FAAAAAAAAAAAAAAAAAAAAAFozbkpbkBj5Ri8ZHHl4uTXuXGm_v6__KyHzvqGWRgil%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D428x97ePXCy95PZ7i8L1x%252B1xSbk%253D)
이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.조회 전략데이터를 조회할 때 주로 사용하는 전략이 Cache Aside 전략이다. Look Aside 전략 또는 Lazy Loading 전략이라고 부른다. 캐시에 데이터가 있을 경우 (= Cache Hit) 캐시에 데이터가 없을 경우 (= Cache Miss) Cache Aside 전략은 캐시(Cache)에서 데이터를 확인하고, 없다면 DB를 통해 조회해오는 방식이다. 쓰기 전략Write Around 전략Cache Aside 전략이 데이터를 어떻게 조회할 지에 대한 전략이었다면, Write Around 전략은 데이터를 어떻게 쓸지(저장, 수정, 삭제)에 대한 전략이다. Write Around 전략은 Cache ..
![[Redis] 레디스 개념과 기본 명령어](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FWyxJY%2FbtsJvnRg6VE%2FAAAAAAAAAAAAAAAAAAAAAOvZePcrNx-Pgu2V17Z7CDnzfYH2v09BRJjXt7Xw-wg9%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D%252Fk9aONj7sn2An%252BRJDkuBP7wkVWY%253D)
이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.RedisOracle, MySQL, PostgreSQL 등 RDB는 디스크에 데이터를 저장하기 떄문에 상대적으로 느리다.하지만 NoSQL인 레디스(Redis)는 인메모리(in-memory)에 모든 데이터를 저장한다. 그래서 데이터의 처리 성능이 굉장히 빠르다. NoSQL은 아래와 같이 Key와 Value 형태로 데이터를 저장하는 데이터베이스이다. Redis 네이밍 컨벤션여러가지 컨벤션이 존재하지만 콜론(:)을 이용해서 계층적으로 의미를 구분해서 사용한다는 것을 꼭 기억해야 한다.users:100:profile : 사용자들(users) 중에서 PK가 100인 사용자(user)의 프로필(profile)products:..
![[Github Actions] CI/CD 기본 개념](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FPPr6T%2FbtsJtKAsSo9%2FAAAAAAAAAAAAAAAAAAAAAN_CZ8kETFqT1al8Fjl3Au64fg9ftlT4ouf_cTExQ9i9%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DQ%252F0XwYC1O9NLJM8vZwR%252Fzyu07gg%253D)
이 글은 인프런의 지식 공유자 박재성님의 강의를 듣고 개인적으로 정리하는 글임을 알립니다.CI / CD 개념CI/CD는 Continuous Integration(지속적 통합)과 Continuous Deployment(지속적 배포)를 뜻한다.이 개념은 개발자가 더 효율적으로 코드를 작성하고, 빠르고 안정적으로 사용자에게 소프트웨어를 제공하는 것을 목표로 한다.한마디로 CI/CD는 테스트(Test), 통합(Merge), 배포(Deploy)의 과정을 자동화하는 걸 의미한다. 서비스를 운영하다보면 새로운 기능을 추가하는 일이 많아진다.새로운 기능에 대한 코드를 작성한 뒤에 Commit을 하고, 브랜치에 Merge를 하고 배포를 한다.배포를 할 때 직접 컴퓨터 서버(ex. AWS EC2)에 접속해서 새로운 코드를..
![[Docker] Stateless](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbYOuUf%2FbtsJuHI9h8O%2FAAAAAAAAAAAAAAAAAAAAAI6SonWIiYcPMFRvfmO5Y5IVXM96vHqEs8vxeKBcyWIq%2Fimg.webp%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D1otW7odoUMgMcwZHFdZjcv8rVsE%253D)
StatelessStateless(무상태)는 시스템이나 애플리케이션이 특정 요청 간의 상태를 저장하지 않는 구조를 의미한다. 즉, 각 요청은 서로 독립적이며, 요청을 처리하는 데 있어서 이전의 요청이나 세션 정보를 참조하지 않는다.Docker에서 Stateless는 컨테이너의 성격과 관련이 깊다. Docker 컨테이너는 애플리케이션의 실행 환경을 격리된 상태로 제공하며, Stateless 방식으로 설계된 애플리케이션을 실행하기에 적합하다. 컨테이너의 Stateless 특성Docker 컨테이너는 일반적으로 Stateless 특성을 가진다. 즉, 컨테이너를 중지하거나 삭제하면 그 안에서 발생한 모든 변경 사항이 사라진다.Stateless 애플리케이션은 상태를 컨테이너 내부에 저장하지 않으므로, Docker의..
![[Docker] 이미지 빌드](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fb5u6O8%2FbtsJtGqPfbx%2FAAAAAAAAAAAAAAAAAAAAANPJy4Z8OQq3dL03k7wlv_9TkouGudN4CpgtbEEcTy8m%2Fimg.webp%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DclunFVTFHWQL9CMUaLa1TsOTmoM%253D)
IaC는 코드로 인프라를 정의하고 관리하는 방식이다. 서버, 네트워크, 스토리지 등 인프라 리소스를 코드로 작성하여 자동으로 배포하고 설정할 수 있다. 대표적인 도구로는 Terraform, Ansible, CloudFormation 등이 있다. 이를 통해 인프라 환경을 일관되고 효율적으로 관리할 수 있다.주요 목적: 서버, 네트워크, 데이터베이스 등 인프라의 생성과 관리를 자동화하고, 코드화하여 반복 가능하게 만드는 것이 목적이다. Docker 이미지 빌드는 애플리케이션 실행 환경을 이미지로 패키징하는 과정이다. 애플리케이션 코드, 라이브러리, 종속성 등을 포함한 환경을 Dockerfile로 정의하고, 이를 통해 이미지를 빌드하여 컨테이너를 실행할 수 있다. Docker 이미지는 애플리케이션이 어디서든 ..
![[Docker] 이미지와 컨테이너 레이어](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FXC760%2FbtsJuzD8Z5t%2FAAAAAAAAAAAAAAAAAAAAABCYKrJoAd9hJ5fusYmocnUGRX087HCXMS13sTY4GTFR%2Fimg.webp%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DhtK3ErnEsHOKpe3hjHlaT55b7ZM%253D)
이 글은 인프런의 개발자를 위한 쉬운도커(데브위키) 강의를 수강하고 개인적으로 정리하는 글임을 알립니다.이미지 레이어(Image Layer)Docker 이미지는 여러 개의 읽기 전용 레이어로 구성되어 있다. 각 레이어는 하나의 명령어(예: RUN, COPY 등)가 실행될 때마다 생성된다. 예를 들어, Dockerfile에서 각 명령어를 실행할 때마다 새로운 레이어가 만들어지며, 이런 레이어들이 쌓여서 하나의 Docker 이미지를 형성한다. 이때 각 레이어는 변경된 부분만 저장되므로, 이미지가 효율적으로 관리될 수 있다.읽기 전용(Read-only): 이미지를 구성하는 레이어들은 모두 읽기 전용이다. 즉, 이미지를 실행하면서 이 레이어들을 변경할 수 없다.레이어의 중복 방지: Docker는 이미지의 레이어..
![[Docker] MySQL 이미지 빌드](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbcBuqM%2FbtsJthXJAPa%2FAAAAAAAAAAAAAAAAAAAAAEczxJxWTKw70pdROeAXnbN29IjexLzFDo56aBlZI_0E%2Fimg.webp%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DX7k0q%252BH4dsCgOYv%252FDjb9bMzKd34%253D)
도커파일이 존재하는 디렉토리에 init.sql과 my.cnf가 존재한다.init.sql은 구축되어야할 DDL등이 정의되어있는 sql 파일이다. Dockerfile# MySQL 8.0 버전을 베이스 이미지로 사용FROM mysql:8.0.32# MySQL 설정 파일을 복사COPY ./my.cnf /etc/mysql/conf.d/my.cnf# init.sql 파일을 /docker-entrypoint-initdb.d/로 복사COPY ./init.sql /docker-entrypoint-initdb.d/# 계정 정보 설정ENV MYSQL_ROOT_PASSWORD=ENV MYSQL_DATABASE=ENV MYSQL_USER=ENV MYSQL_PASSWORD=# MySQL 기본 포트 3306 노출EXPOSE 330..
![[Docker] 이미지 레지스트리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F7kgRx%2FbtsJtc2VknH%2FAAAAAAAAAAAAAAAAAAAAAGMGgwZZFoAguTsE8oqqhHYT6QC2VtkrUcA7U1bdTu8F%2Fimg.webp%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D4sfKhnsTOFEIqcl8xBvSo1feq4w%253D)
이 글은 인프런의 개발자를 위한 쉬운도커(데브위키) 강의를 수강하고 개인적으로 정리하는 글임을 알립니다.이미지 레지스트리도커 이미지 레지스트리(Docker Image Registry)는 도커 이미지들을 저장하고 관리하는 중앙 저장소 역할을 하는 서비스이다.도커는 애플리케이션을 패키징한 이미지를 생성한 후, 이 이미지를 레지스트리에 저장하고, 필요할 때 해당 이미지를 다운로드하여 컨테이너를 실행한다.퍼블릭 레지스트리-누구나 접근할 수 있는 레지스트리로, 가장 대표적인 퍼블릭 레지스트리는 Docker Hub이다. -Docker Hub에는 수많은 공식 이미지(Nginx, MySQL, Redis 등)와 커뮤니티가 만든 이미지를 제공하며, 무료로 사용할 수 있다.프라이빗 레지스트리-조직이나 개인이 비공개로 운영하..