[DevOps] Redis 7.x → Valkey 8.x 마이그레이션 PoC
·
DevOps/DevOps
개요Redis Laps가 SSPL로 전환하면서, Redis 7.x 버전을 fork한 Valkey Engine 프로젝트가 시작되었다. Valkey 7.x는 Redis 7.x를 그대로 fork한 것과 다름 없어서, 마이그레이션을 할 때 클라이언트 라이브러리를 변경하는 것 이외에는 크게 신경 쓸 점이 없다. 하지만 Valkey 8.x Engine부터는 Redis와 꽤 다른 지점이 생긴다. 직접 ElastiCache Redis, Valkey Engine을 생성해서 마이그레이션 과정을 정리해본다. 1. 기본적인 읽기 전용 Cache기본 환경 정보- Node Type: cache.t4g.small- Cluster Mode: Enabled- Shards/Nodes: 1개 / 2개- Encryption in tran..
[DevOps] 캐시와 Redis, ElastiCache
·
DevOps/AWS
개요이번에 ElastiCache와 관련한 하나의 에픽을 마무리하게 되었다. AWS 셀프 서비스를 위해서 작업에 집중했는데, 본격적인 사내 개발자 사용자 가이드와 안내 문서를 작성하기에 앞서 캐시와 Redis, ElastiCache, 더 나아가 Redis > Valkey엔진별 특성/ 마이그레이션 내용을 정확히 공부하고자, 블로그 글을 통해 정리해보려고 한다. 그래서 다음과 같은 순서로 글을 쭉 작성하며 정리할 예정!캐싱 개념 | Redis & ElastiCachePython으로 통신하면서 단일 노드 ElastiCache 실습해보기클러스터 모드의 ElastiCache 사용하면서 구조 파악하기Redis, Valkey 각 엔진을 생성하고, 성능 및 비용 비교하기Redis, Valkey 엔진별 차이점 파악하기이번..
[Git] Git Rebase 학습하고 실습해보기
·
회고 & 후기/개발 일지
개요git rebase를 실무에서 여러 브랜치에 적용하려니까 헷갈리는 점이 많아서 이번 기회에 git 공부를 확실히 하고자 블로그를 작성하게 되었다. 이 포스팅에서는 git 명령어 뿐만 아니라 fork라는 도구도 함께 사용하며 익힐 것! 1. git rebasegit rebase는 말 그대로 브랜치의 base를 다시(re) 설정한다. git rebase를 통해 커밋 그래프를 단순하게 가져가고, 의미 있는 커밋들만 남겨서 더 원활한 협업을 지원한다. 현재 master 브랜치의 a3 커밋을 베이스로 작업을 진행하고 있고, master 브랜치는 또 다른 작업들이 진행된 상황이다. 이 master 브랜치의 최신 작업 내용을, 내가 현재 작업 중인 feature 브랜치에도 적용하고 싶을 때 rebase 명령어를..
[AWS] CloudWatch 비용 숨바꼭질 : per metric-month
·
DevOps/AWS
개요이제 KAU 크레딧이 끝나서 운영 비용을 줄일 방법을 다시 고안 중이다. 청구서를 유심히 보다가 발견한 CloudWatch 비용...!  CloudWatch Agent를 EC2에 설치하면서 구성파일을 만든다. 이때 Agent가 수집할 내용을 설정했기에 발생하는 비용이다. 한 달에 $ 2 정도 청구되고 있는데 현재는 CloudWatch Agent를 사용하지 않으므로 설정만 깔끔하게 없애주었다!   CloudWatch Agent 파일 접근 에이전트 설정 파일 위치 : /opt/aws/amazon-clouwatch-agent/bin/config.json 파일 접근sudo vi /opt/aws/amazon-cloudwatch-agent/bin/config.json 파일 내용 및 삭제 { "age..
[Spring] 처리율 제한(Rate Limit)으로 악의적인 공격 차단하기
·
Dev/Spring & JPA
개요KOALA 서비스 회원가입에서는 총 2 가지의 인증이 요구된다.이메일 인증문자 인증 문자 인증은 1 건당 대략 20원 정도 청구된다.만약 누군가 의도적으로 많은 요청을 보내면, 불필요한 요청이 쌓이고 비용이 지불된다.이를 예방하기 위한 처리율 제한 기능을 추가해보자!  처리율 제한(Rate Limit)일정 시간 내에 요청되는 최대 횟수를 제한하는 기술이다.과도한 요청으로 인한 서비스 장애 및 피해를 방지한다. 예시사용자가 5회 이상 잘못된 비밀번호를 입력할 경우, 15분 동안 해당 계정의 로그인 시도를 차단초당 최대 1000명의 사용자가 접속할 수 있도록 제한하며, 초과 시 대기열에 넣거나 "사이트가 과부하 상태입니다"라는 메시지를 표시한 사용자가 특정 API에 1초에 100번의 요청을 보내고자 할 ..
[Spring] HTTP Request Client(webclient, feignclient)
·
Dev/Spring & JPA
개요 HTTP Client에 대해서는 인턴십 때 익히 알고 있었다. 당시 회사 코드는 단순한 MVC 구조가 아니라 모두 HTTP Client 요청을 날렸다.  이때 Webclient를 사용했는데, Asynchronous & Non-blocking으로 리소스 자원의 효율성을 극대화했다. 보통 front → back회사 코드는 front → back → platform  아무튼 그렇게 첫 HTTP Client를 사용했었고.. 이후 KOALA 프로젝트에서 Feign을 접했다. 작년 10월부터 올해 7월, HTTP Client를 사용하며 노션에 정리해둔 내용을 오픈한다...🤗 당시에 feign의 동시성 관련해서 헷갈리는 점이 너무 많았으나, 공식문서와 사례를 읽으면서 모두 정리해봤다!!  1. HTTP Re..
[Network] 네트워크 원리(6) 웹 서버에 도착하여 응답 데이터가 웹 브라우저로 돌아간다
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.  STORY 1 | 서버의 개요1-1) 클라이언트와 서버의 차이점서버 머신은 용도에 따라 다양한 OS, 하드웨어가 있다. 하지만 네트워크에 관한 부분( LAN 어댑터, 프로토콜 스택, 소켓 라이브러리 등)의 기능은 클라이언트와 서버가 같은 구졸르 갖는다.→ TCP/IP 기능은 하드웨어나 OS가 무엇이든지 달라지지 않기 때문에 기능이 통일되어 있다고 봐도 무방하다. ■ 그렇다면 차이점은?소켓 라이브러리의 connection과 데이터 송수신서버 애플리케이션은 동시에 다수의 클라이언트 PC와 대화하나의 프로그램으로 여러 클라이언트를 다루는 것은 X. 보통은 1:1로 대화 1-2) 서버 애플리케이션의 구조(b): 클라이언트가 새로 접속할 ..
[Network] 네트워크 원리(5) 서버측의 LAN에는 무엇이 있는가?
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.Chapter 5 - 방화벽과 캐시 서버의 탐험   STORY 1 | 웹 서버의 설치 장소1-1) 사내에 설치클라이언트의 POP/프로바이더로부터 오는 패킷을 방화벽에서 한 번 거르는 방법이 보편화되어 있다.특정 서버에서 동작하는 특정 애플리케이션에 액세스하는 패킷만 통과시키고, 그 외 패킷은 모두 차단한다.액세스를 허가한 애플리케이션에 보안 구멍이 있을 수 있지만, 클 to 서구조에 비하면 위험성이 낮다.현재는 이 구조를 빠져나가는 다양한 수법이 많이 생겨셔 더불어서 바이러스 검사, 부정 침입 검사 등의 구조를 함께 사용한다. 1-2) 데이터 센터에 설치데이터 센터로부터 서버를 빌리는 형식데이터 센터는 프로바이더의 중심인 NOC에 접..
[BackEnd] 커뮤니티 게시물 목록 조회 API 쿼리를 QueryDsl로 구현해보기
·
Dev/Backend
개요코알라 커뮤니티 기능 중 게시판 목록 조회 API를 위해 QueryDsl을 학습 및 구현해보았다.요구사항은 다음과 같다.정렬 (최신순, 조회수, 좋아요수)검색 (제목, 내용, 작성자)페이징 이 세 가지 조건 하에, DB에서 값을 가져오기 위해 QueryDsl을 활용하였다. * JPQL 대신 QueryDsl을 사용한 이유   필요한 Entity, Request게시판 전체 목록을 조회할 때 단순히 GET을 하는 것이 아니라, 개요에서 언급한 3가지 조건을 만족시켜야 한다. 조회 조건을 만족하기 위해 다음과 같은 Request record를 생성한다.@Schema(description = "게시글 목록 검색 요청 객체")public record SearchBoardRequest( @Schema(des..
[백준/1987] 알파벳 | DFS와 백트래킹
·
PS/BOJ&Programmers
알파벳오랜만의 백준 포스팅!!코테에서 부족함을 절실히x99 느끼고 다시 알고리즘을 본격적으로 시작했다..🥲🤗 문제 바로 가기  알고리즘 말이 보드를 탐색하는 조건은 다음과 같다.① (1,1)부터 탐색한다.② 지금까지 지나온 모든 칸에 적혀있는 알파벳과 달라야 이동할 수 있다. 이 조건 아래에서 가능한 경로 중 최대한 큰 수를 구하는 것이 목표다.따라서, DFS를 통해 탐색하는 방법을 선택했다.  def dfs(y,x,cnt): visited[y][x] = True alphabet[ord(graph[y][x])-65] = True # print('시작점: ', graph[y][x]) # 현재 위치에서 네 방향의 위치 확인 for dy, dx in dr: ny, nx..
[Network] 네트워크 원리(4) 액세스 회선을 통해 인터넷의 내부로
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.Chapter 4 - 액세스 회선과 프로바이더의 탐험 5장과 더불어 가장 생소하고 어려웠던 내용.... 🥹 라우터부터 액세스 회선에서 이동하는 부분은 잘 알아두면 좋을 듯하다.  STORY 1 | ADSL 기술을 이용한 액세스 회선의 구조와 동작1-1) 인터넷의 기본은 가정이나 회사의 LAN과 같다.패킷을 중계하는 부분과 라우터의 기본적인 구조/동작은 같다. ■ 인터넷과 LAN의 차이점중계 장치 간의 거리 : 가정이나 회사의 LAN은 멀어봤자 수백미터 정도이지만, 인터넷은 한국과 미국을 연결하는 부분은 태평양을 넘어야 하므로 케이블로 연결하는 것이 어려울 정도로 중계 장치 간의 거리가 멀다.패킷의 중계 대상을 제어하는 부분 - 히 ..
[Network] 네트워크 원리 (3) 케이블의 앞은 LAN 기기였다.
·
CS/Network
개요성공과 실패를 결정하는 1% 네트워크 원리를 공부하고 정리한 글이다.Chapter 3 - 허브와 스위치, 라우터의 탐험  STORY 1 | 케이블과 리피터, 허브 속에 신호가 흘러간다.1-1) 하나하나의 패킷이 독립적으로 동작한다.컴퓨터에서 송신된 패킷은 중계 장치(허브, 라우터 등)에 의해 운반된다. 이때, 중계장치는 어떤 데이터인지 전혀 신경쓰지 않고 전송에만 집중한다.  1-2) LAN 케이블은 신호를 약화시키지 않는 것이 핵심이다.■ 높은 주파수와 낮은 주파수  1-3) ‘꼼’은 잡음을 방지하기 위한 방법이다.트위스티 페어 케이블은 마주 꼬여있는 상태를 통해서 잡음을 막는다. ■ 잡음의 원인은 케이블에서 발생하는 전자파다. 전자파가 금속 등의 도전체에 닿으면 그 내부에 전류가 발생한다. → 케..
sebinChu
Studying IT with cobinding