[K8S] Kubernetes CLI 총정리
·
DevOps/DevOps
개요업무를 하면서 점점 파드에 접근해서 정보를 확인할 일이 늘어나고 있다. 온콜이나 장애 상황 시에 노션에 붙여둔 명령어를 일일이 찾아보는게 허들이라 느껴져서 아예 블로그에 정리해보기로 했다! KubectlKubernetes API를 사용해서 쿠버네티스 클러스터의 컨트롤 플레인과 통신하기 위한 커맨드 라인 툴이다.리소스 관리: Pod, Service, Deployment, ConfigMap 등 k8s 리소스를 생성하고 관리할 수 있다. YAML 파일을 통해 선언적으로 리소스를 정의하거나 명령형 커맨드로 직접 다룰 수 있다.클러스터 상태 확인: 클러스터에서 실행 중인 애플리케이션의 상태, 노드 정보, 이벤트 로그 등을 조회할 수 있다.애플리케이션 배포 및 업데이트: 컨테이너 이미지를 배포하고, 롤링 업데이..
[회고] 사내 해커톤 시뮬레이션 회고!
·
회고 & 후기/회고 & 후기
개요회사에서 외부인을 대상으로 해커톤을 주최했다. 이 해커톤의 성공적인 진행을 위해 미리 사내 개발자를 대상으로 시뮬레이션을 진행했고, 자진해서 8시간 해커톤을 참여하게되었다. 참여 동기[ 지식 관점 ] 인프라실에서 자연스럽게 인프라 역량을 키우는 데 몰입하다 보니 상대적으로 프로덕트 개발에 대한 집중은 줄어들었다. 그래서 이번 시뮬레이션 대상자 지원은, 놓쳤다고 느꼈던 개발 지식과 열정을 다시 끌어올리기 위해 스스로에게 동기부여를 주기로 했다![ 협업 관점 ] 시즌테크로 입사한지 6개월차가 되었다. SRE팀은 당근 인프라를 관리하며 서비스 안정성을 책임진다. 또한, 개발자들이 개발에 집중할 수 있도록 인프라 기능을 추상화하고, 서비스 개발에만 집중할 수 있도록 플랫폼을 개발 및 운영한다. 그래서 개발자..
[Network] CIDR, IP, Subnet Mask
·
CS/Network
개요볼 때마다 헷갈려서 아예 각 잡고 정리해보는 CIDR, IP, Subnet Mask 개념확실하게 짚고 넘어가자! 1. CIDR(Classless Inter-Domain Routing)IP/비트수로 네트워크 범위를 표현하는 방식x.x.x.x/ab 형식 2. IP1.1 IP 의미네트워크 + 호스트를 8비트씩 점으로 구분해서 10진수로 표기하는 방법Network Address: 해당 IP가 속한 네트워크 구역을 알 수 있다.192.168.1.0/24 네트워크에 있는 모든 장비는 네트워크 주소가 192.168.1.0으로 같다. (서브넷 마스크를 통해 알 수 있다.)192.168.1.1/24, 192.168.1.12/24 ,192.168.1.2/24가 목적지인 패킷은 라우터에 의해 모두 같은 네트워크로 라우팅..
[Monitoring] 시계열 데이터와 TSDB
·
Monitoring/PromQL & Grafana
개요인턴 때부터 Grafana 작업을 하면서 Metrics, TSDB, PromQL 관련 내용들을 개인 노션에 쭉 작성했는데, 블로그에도 새로운 카테고리를 생성하고 정리하는 공간을 만들었다. 요즘 Alert Rule을 세팅하는 작업을 하고 있는데, 노션 문서를 자주 참고하게 되어서 아예 블로그로 올려버리기로 결심!1. 시계열 기반 모니터링시간의 변화에 따라 축적된 데이터들을 수집, 저장, 분석, 알람하는 시스템예를 들어서.. Prometheus는 다음과 같은 일을 한다.15초마다 /metrics 에 접속해서 현재 상태값 긁어오기수집한 메트릭을 시간과 함께 저장PromQL 쿼리를 통해 과거 1시간 평균 rate같은 걸 분석1.1 운영 시스템에서 시계열 데이터과거에 무슨 일이 있었는지?변화 추이는 어떠한지?..
[Network] CDN(Content Delivery Network)
·
CS/Network
개요Valkey 발표 및 전환을 앞두고..! 이번 스프린트에서 드디어 CloudFront Datadog Alert 작업을 시작하게 되었다. 윈터테크 인턴 시절 CloudFront 리소스에서 Additional Metrics가 비활성화된 점을 발견하고, 프로덕션 환경에 한해 이를 활성화하여 모니터링을 강화하자는 제안을 했으며 팀에서 이를 받아들여 적용하였다. 그러나 Additional Metrics 활성화 이후 기존 CloudFront Datadog Alert의 정확도가 떨어지는 문제가 발생했다. 이번 스프린트에서는 이 문제를 개선하여 Alert 정확도를 높이고, CDN 모니터링을 체계적으로 강화하는 것을 목표로 한다. 이번 포스팅으로 CDN에 대해 잘 정리해보겠다! 1. CDN 기본 구조와 목적CDN은 ..
[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..
sebinChu
'분류 전체보기' 카테고리의 글 목록