Redis와 NoSQL, Redis의 데이터 타입 이해하기
·
DevOps
Redis Redis는 REmote DIctionay Server의 줄임말로, Java의 Map과 같은 방식으로 데이터를 저장하는 데이터베이스.일반적인 관계형 데이터베이스와 다른 가장 큰 특징은 In-Memory 데이터베이스라는 점.Redis는 메모리, 즉 RAM에 데이터를 저장하기 때문에, 복잡한 입출력 과정이 필요하지 않다. 그래서 일반적인 관계형 데이터베이스에 비해 더 빠르게 동작하는 대신, 언제든 사라질 수 있는 데이터를 다룬다는 차이를 가진다.사용 예시 > 특정 게시글의 조회수와 같이 빠르게 업데이트 되는 데이터, 사용자 세션, 장바구니와 같이 시간이 지나면 삭제되는 데이터 등 NoSQL 관계형 데이터베이스는 일반적으로 테이블 형식으로 데이터를 저장하고, 그 데이터를 회수하기 위해 SQL을 사용..
Dockerfile & Docker Compose 사용하기
·
DevOps
Dockerfile  Dockerfile : 컴퓨터에서 돌아가는 앱을 만들기 위한 레시피 같은 존재. Dockerfile을 토대로 DockerImage 생성 가능. DockerImage는 앱을 실행하는데 필요한 모든 것을 담고 있다. Dockerfile 예제 ># DockerfileFROM ubuntu:latestMAINTAINER Your Name RUN apt-get update && apt-get install -y nginxCOPY index.html /usr/share/nginx/htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"] 위 Dockerfile은 Ubuntu 최신 버전을 기반으로 nginx를 설치하고 index.html 파일을 nginx의 html 디렉..
[🐙 Git & Github ] Github Actions 을 활용한 CI/CD 파이프라인 구성하기
·
Git
CI/CD  CI/CD는 지속적 통합 Continuous Integration과 지속적 배포 Continuous Deploy/Delivery를 의미한다.  지속적 통합(CI)이란? CI는 개발자들이 코드 변경사항을 자주 공유하고 통합하는 과정이다.빈번한 코드 업데이트 : 개발자들이 작업을 자주 중앙 저장소에 올림.자동화된 검증 : 코드가 올라갈 때 마다 자동으로 빌드와 테스트가 실행됨.빠른 문제 발견 : 통합 과정에서 발생할 수 있는 문제를 조기에 발견하고 해결.  지속적 배포(CD)란? CD는 검증된 코드를 자동으로 배포하는 과정이며 두 가지 형태로 나뉜다.지속적 전달 Continuous Delivery : 배포 준비가 완료된 코드를 수동으로 배포지속적 배포 Continuous Deploy : 검증된 ..
CI/CD와 Docker 이해하기
·
DevOps
CI/CD  지속적인 통합 Continuous Integration지속적인 서비스 제공 Continuous Delivery지속적인 배포 Continuous Deployment  Docker 도커를 사용하는 이유애플리케이션 개발과 배포가 편리해짐 Docker Container 내부에서 여러 소프트웨어를 설치해도 호스트 OS에는 영향이 없음.CI 과정의 테스트에서 Docker 활용.어떤 서버에 올리더라도 같은 환경으로 구성된 컨테이너로 동작하기 때문에 표준화된 배포를 구성할 수 있음.→ 애플리케이션의 독립성과 확장성이 높아짐 Docker 설치 ( Mac 기준 ) homebrew를 이용해 Docker, Docker compose 설치# 사전에 homebrew 설치 필수# docker for mac설치brew ..
서킷 브레이커 Resilience4j와 API 게이트웨이 이해하기
·
Spring
서킷 브레이커 서킷 브레이커는 마이크로서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지하는 패턴외부 서비스 호출 실패 시 빠른 실패를 통해 장애를 격리하고, 시스템의 다른 부분에 영향을 주지 않도록 함.상태 변화 : 클로즈드 → 오픈 → 하프-오픈  Resilience4j Resilience4j : 서킷 브레이커 라이브러리로, 서비스 간의 호출 실패를 감지하고 시스템의 안정성을 유지한다.서킷 브레이커 상태클로즈드 : 기본 상태로, 모든 요청을 통과 시킴. 이 상태에서 호출이 실패하면 실패 카운터가 증가함. 실패율이 설정된 임계값을 초과하면 서킷 브레이커가 오픈 상태로 전환됨.오픈 : 서킷 브레이커가 오픈 상태로 전환되면 모든 요청을 즉시 실패로 처리, 에러 응답 반환. 설정된 대기 시간이..
클라이언트 사이드 로드 밸런싱 FeignClient와 Ribbon 이해하기
·
Spring
로드 밸런싱 로드 밸런싱은 네트워크 트래픽을 여러 서버로 분산시켜 서버의 부하를 줄이고, 시스템의 성능과 가용성을 높이는 기술.서버 간 트래픽을 고르게 분배하여 특정 서버에 부하가 집중되는 것을 방지.종류 : 클라이언트 사이드 로드 밸런싱, 서버 사이드 로드 밸런싱 클라이언트 사이드 로드 밸런싱 클라이언트 사이드 로드 밸런싱은 클라이언트가 직접 여러 서버 중 하나를 선택하여 요청을 보내는 방식.클라이언트는 서버의 목록을 가지고 있으며, 이를 바탕으로 로드 밸런싱을 수행.  FeignClient FeignClient는 Spring Cloud에서 제공하는 HTTP 클라이언트로, 선언적으로 RESTful 웹 서비스를 호출 할 수 있음.Eureka와 같은 서비스 디스커버리와 연동하여 동적으로 서비스 인스턴스를 ..
서비스 디스커버리 Eureka 서버 이해하기 및 실습
·
Spring
서비스 디스커버리 서비스 디스커버리 : 마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능.각 서비스는 등록 서버에 자신의 위치를 등록하고, 다른 서비스는 이를 조회하여 통신.주요 기능으로는 서비스 등록, 서비스 조회, 헬스 체크 등이 있음.  Eureka Eureka : 넷플릭스가 개발한 서비스 디스커버리 서버로, 마이크로 서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리.모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할을 하며, 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성 보장. Eureka 서버 설정 Eureka 서버는 서비스 레지스트리를 구성하는 중앙 서버서버 설정 파일 예시 >server: port: 8761eureka: client: reg..
MSA와 Spring Cloud 이해하기
·
Spring
MSA Microservices Architecture (MSA) : MSA는 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여 개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일. 각 서비스는 특정 비즈니스 기능을 수행하며, 서로 독립적으로 배포되고 확장 될 수 있음. 서비스 간의 통신은 주로 HTTP/HTTPS, 메시지 큐 등을 통해 이루어짐.  Spring Cloud Spring Cloud : 마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장.주요 기능서비스 등록 및 디스커버리 : Eureka, Consul, Zookeeper로드 밸런싱 : Ribbon, Spring Cloud LoadBalancer서킷 브레이커 : Hystrix, Resil..