Redis Sentinel Redis 공식문서에는 다음과 같이 소개되고 있다. High availability with Redis Sentinel for non-clustered Redis 한글로 직역하자면 Redis Cluster를 사용하지 않을 때 Redis에 고가용성을 제공한다라는 뜻이다. 지난 포스팅때에는 Redis Replication(Redis 복제)에 대해 설명하였는데 거기에 HA의 개념을 덧붙였다고 생각하면 된다. Sentinel 기능의 전체 목록 모니터링 마스터 및 Replication 인스턴스가 예상대로 작동하는지 지속적으로 확인 알림 모니터링되는 Redis 중 문제가 있음을 API를 통해 알릴 수 있다. 자동 장애 조치 예상대로 작동되지 않는 경우 Replication를 Master로..
Redis는 Remote Dictionary Server의 약자로서, "Key - Value" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템이다. 인 메모리 데이터 구조를 가진 저장소이다. 즉, 휘발성을 가진 데이터베이스 이므로 MySQL과 같은 RDBMS와 다르게 데이터베이스를 종료시키면 메모리에 있는 데이터는 다 사라지게 된다. 그래서 Redis를 사용할 때에는 HA(고가용성)에 대한 의문을 항상 가져야 하는데 Redis는 이런 부분을 다양한 기능을 통해 지원을 하고 있다. Redis Replication Redis가 복제를 통해 고가용성 및 장애 조치를 지원하는 방법 복제본 Redis Replication은 사용 및 구성이 간편한 리더의 Follo..
우리가 개발을 하면서 하루에도 수십번 말하고 듣는 말이 있습니다. “로그 확인해봤어??” 로그 (Log) 여기서 로그란 무엇일까요?? 로그(Log)란 시스템이 동작할 때 시스템의 상태 및 동작 정보를 시간 경과에 따라 기록하는 것을 의미합니다. 예를 들어 우리가 회원가입을 한다고 가정해보았을 때, Spring 코드로는 아래와 같은 로직이 있겠죠?? @PostMapping public ResponseEntity join(@RequestBody MemberDto member){ } 위와 같은 로직에서 member 정보가 잘 넘어왔는지 확인하기 위하여 우리는 안에 담긴 내용들을 확인하는 작업들을 하는데 System.out.println() 을 사용하죠. 하지만 이 방법은 잘못된 방법입니다. 잘못된 로그 찍는 ..
EC2에 Docker를 이용한 Nginx 컨테이너 구축하기 이것저것 패키지를 설치하여 EC2를 더럽히고 싶지 않았기에 Docker를 통한 Nginx 컨테이너를 구축하고 설정을 해보려고 한다. 일단 Nginx에 대해 알아보자! 전에 한번 Nginx와 로드밸런싱에 대해 블로그 포스트를 한적이 있다. 정리한 글은 아래 링크를 한번 보시오! https://doreree.tistory.com/9 로드밸런싱 (Road Balancing) 먼저 로드밸런싱이란?? 서버가 처리해야 할 업무 또는 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리 많은 트래픽을 대처하는 방법 Scale Up : 기존 서버의 성능을 높인다. (비용이 증가) Scale Ou doreree.tistory.com Nginx 오픈..
아키텍쳐 설계한 내용을 바탕으로 개발 어플리케이션을 배포를 할 때, 당연하게 AWS EC2와 Docker를 이용해서 배포를 진행하고 있었다. 하지만?? Docker를 사용해야 하는 이유에 대해 동료 개발자가 질문을 했을 때 대답을 할 수 없었다. 당연하게 사용하고 있었기 때문이다. 그래서 Docker의 특징인 컨테이너가 무엇인지 가상머신과의 차이점은 무엇인지, 그에 따른 특장점에 대해 알아보려고 한다. 기존 서버 관리의 문제점 전용 서버 방식 기존 서버를 이용한 배포에서는 서버 하나에 여러 개의 프로그램을 설치하는 것도 번거로운데, 포트끼리 충돌이 일어날 가능성이 높다. 만약 아래와 같이 테스트 서버에서 개발을 진행하고 운영 서버로 개발 내용을 이식을 한다고 가정을 해보자. 실제로 운영 서버에 테스트 서..
Jenkins란??? 다른 일상적인 개발 작업을 자동화할 뿐 아니라 파이프라인(Pipeline)을 사용해 소스코드 리포지토리에 대한 지속적인 통합과 지속적인 전달 환경을 구축하기 위한 방법을 제공하는 툴 그래서 뭐냐?? CI/CD 지속적인 통합, 배포를 가능하게 해주는 툴 CI/CD CI 하루에 여러 번 그들의 코드를 버전 제어 저장소에 체크하는 방법이다. 오류를 빠르고 쉽게 찾을 수 있게 해 주며, 자동화된 빌드 CD 버그 수정, 기능 및 구성 변경 사항을 프로덕트에 안정적으로 신속하고 지속적으로 배포할 수 있도록 해주는 프로세스 빠른 버그 픽스가 가능하며 빠르게 배포 가능하다. 그렇다고 모든 과정을 대신해주냐?? Jenkins가 각각의 단계에 대한 스크립트 작성의 필요성을 없애주지는 않는다. 하지만 ..
먼저 로드밸런싱이란?? 서버가 처리해야 할 업무 또는 요청(Load)을 여러 대의 서버로 나누어(Balancing) 처리 많은 트래픽을 대처하는 방법 Scale Up : 기존 서버의 성능을 높인다. (비용이 증가) Scale Out : 똑같은 성능을 가진 서버를 여러대 증산시킨다. (트래픽 분산) 여기서 Scale Out을 하기 위해서 무조건 해야 하는 일이 로드밸런싱이다. Scale Out의 장점 서버는 갑자기 다운될 수 있고 배포를 하게 된다면 다운이 될 수 있다. 여러대의 서버를 두게 된다면 하나의 서버가 다운되더라도 다른 서버가 있기 때문에 정상적인 서비스가 가능하다. (무중단 배포) 로드밸런싱 네트워크 트래픽을 균등하게 배포하는 방법으로 많은 양의 트래픽을 처리하기 위해 서버 앞단에 존재하는 소..