클라우드나 온프레미즈 등 여기저기 흩어져있는 서버에 연결해야하는 경우에 VPN을 쓰게 된다. 다양한 툴들이 있지만 개인적으로 최근에 접하면서 가장 좋아하게 된 것은 tailscale이라는 VPN이었다. 간편한 설정을 제공하면서 wireGuard 기반으로 돌아가는 VPN으로 관리 등 편한 부분들이 많다. 개인적으로 온프레미즈 기반의 쿠버네티스를 운영해야하는 상황에서 외부에서도 작업할 수 있게, 또한 보안상의 문제로 tailscale을 직접 사용하고 있는데 꽤 좋았다. tailscale에 대해서 레퍼런스를 확인할 때, 일반적인 VPN과는 다르게 WireGuard 기반으로 동작한다는 내용이 있었는데, 나중에 한 번 VPN의 비교를 다뤄보면 좋을 것 같다는 생각이 들었다. 이번 포스팅에서는 관련된 내용과 함께 ..
DevOps
쿠버네티스에 대해서 공부하다보면 매니페스트 중에 네트워크 연결을 도와주는 Service라는 종류가 있다. Service 매니페스트는 크게 3가지로, 내부에서 IP를 통해서 연결할 수 있게 해주는 ClusterIP와 NodePort 그리고 LoadBalancer 이렇게 3가지가 있다. 클라우드에서 제공하는 쿠버네티스를 사용하게 되면, LoadBalancer 타입의 Service를 사용할 때 GCP나 AWS같은 IaaS 플랫폼에서 제공하는 로드 밸런서를 사용한다. 하지만 아무것도 없는 온프레미스에서 로드 밸런서 타입을 사용하면 계속 Pending으로 뜨게 된다. 이 때 metalLB와 같은 로드밸런서를 통해서 IP 대역을 할당받아야 한다. 이러한 아무것도 없는 온프레미스인 베어메탈에서 로드밸런서 타입의 서비..
아주 예전에, 학교 공지사항의 내용을 스크래핑에서 데이터베이스에 저장하고, 새로운 공지사항이 올라온 경우 사용자에게 알림을 보내는 기능을 개발한 경험이 있다. 이에 대한 내용도 포스팅을 해두었으나, 최근에 좀 더 자세하게 해당 내용을 써달라는 요청을 받기도 했고, 고생을 많이 했던 경험이 있기 때문에 보다 자세하게 해당 내용과 다양한 트러블슈팅에 대한 내용도 담으면 좋을 것 같다는 생각을 하게 되어, 좀 더 구체적으로 작성해보려고 한다. 시대생팀에서 2023년에 앱을 리빌드 하는 과정에 앞서, 기획팀원분들은 나서서 유저 리서치를 진행했습니다. 함께 유저 리서치에 참여하여 실제 사용자들은 어떤 기능을 유용하게 사용하고 있는지 함께 이야기를 나눈 적이 있습니다. 그 당시 새롭게 학교 공지사항이 올라왔을 때..
최근에 새로운 프로덕트에 백엔드 포지션으로 붙게 되면서 기존 프로덕트의 세팅을 해야 하는 일이 있었다. datadog를 통해서 로그 세팅부터 트레이스 세팅까지 완성을 해두었고, 로그 포맷을 조금 수정하고 있던 도중에 문득 관측성의 세 가지 축이란 키워드가 떠올랐다. 원래는 손이 많이 가던 프로덕트는 아니었으나, 나를 포함한 다른 개발자들이 프로덕트에 붙기도 하였고, 앞으로 다양한 서비스를 쌓아올릴 예정이라 정비를 할 필요가 있었다. 간단한 프론트엔드쪽 리펙토링과 함께 백엔드에서는 로그 시스템을 손보고 있었다. 백엔드 시스템의 Observability를 챙겨주는 과정에서 로그라는 것은 정확히 어떻게 찍는 건지. 그런 것들을 실무적으로 고민해 본 적이 없었다. 그래서 그런 것들을 찾아보는 과정에서 이 관측성..
최근에 직접 예약 인스턴스와 세이빙 플랜을 비교하면서 MSP의 계약건을 진행해야하는 일이 있었다. 관련해서 예약 인스턴스와 세이빙 플랜이라는 것이 있다는 것은 알고 있었고, 개인적으로는 예약 인스턴스가 가능한 경우에는 예약 인스턴스, 그 외에 Fargate로 사용하는 부분은 세이빙 플랜을 쓰면 되겠지 하는 단순한 생각이 있었지만, 좀 더 레퍼런스를 찾아보면서 해당 내용을 명확히 정리하게 되었다. 정리하는 과정에서 RI(Reserved Instance)와 SP(Saving Plan)의 정의나 어떤 상황에서 쓰는지 뿐만 아니라, MSP 등 AWS를 사용할 때 있어서 꼭 알아야 하는 비용 관련된 부분은 정리했다. 이번 포스팅에서는 AWS를 사용하는 데 쓰는 비용을 아끼는 여러 방법들과 함께, 보통 이러한 AW..
최근에 Aurora RDS for Postgres를 버전 업그레이드해야 하는 상황이 있었다. 꽤 예전 버전을 쓰고 있었는데, AWS 측에서 RDS for postgres를 지원할 때, 특정 기간 동안 지원하기 때문이다. 지원 기간이 끝난 경우에는 추가 비용을 지불하고 RDS를 써야 한다. 공식적으로 지원하지는 않지만 확장 관리한다는 명목으로 꽤 많은 비용이 센다. 아무튼, 이러한 과정 속에서 RDS를 백업하고 작업을 진행했는데, 일반적으로는 AWS Lambda를 써서 RDS를 주기적으로 S3 dumpall을 사용하는 것으로 알고 있었다. 하지만 AWS Backup이라는 서비스가 나오게 되면서 보다 편리하고 간편하게 백업을 진행할 수 있게 되었다. 이번에는 데이터베이스를 백업하고 복구하는 의미인 재해복구(..
Github Actions를 통해서 ECS에 배포하는 간단한 CI/CD 파이프라인을 사용하고 있다. QA를 하는 과정에서 1시간에 여러 번의 PR이 머지되면서 여러 번의 Github Actions의 workflow가 실행됐는데, 매번 꽤 빌드 속도가 오래 걸렸다. 확인해 보니 dockerfile 빌드하는 과정에서 캐시가 제대로 안 걸려있었는데, 이번에는 Docker 빌드를 빠르게 할 수 있는 buildkit에 대해서 알아보려고 한다. 사실, 우리가 맥에서 도커 데스크탑을 다운로드해서, 직접 도커를 실행한다면 우리는 이미 buildkit을 쓰고 있는 셈이 된다. BuildKit은 기존의 도커 빌더를 대체하는 새로운 백엔드로, Docker Desktop과 Docker Engine 23.0 버전에서 기본 빌더..
회사에서 AWS 관련된 설정들을 확인하는 과정에서 가장 눈에 띄는 것은 Data Transfer 비용이었다. 단순하게 리소스를 확인할 수 있는 다른 호스팅 서비스와 다르게, Data Transfer는 AWS의 트래픽 과금 정책에 따라서 지불하는 금액을 말한다. 사실 클라우드라는 것은 어딘가에 있는 온프레미즈이다(!) 한국에는 총 네 개의 AWS 데이터 센터가 있다. 일산? 평촌? 자세한 위치 파악은 힘들었으나, 네 개의 온프레미즈 데이터 센터가 있다. 당연히 그 데이터 센터에서는 네트워크 작업이 철저하게 되어있어. 우리가 AWS 콘솔을 통해서 사용하려고 하면 손쉽게 리소스를 가져다 쓸 수 있도록 되어있다. 우리가 인터넷을 사용하게 되면, 대한민국의 통신사( KT, SKT, LG U+ )를 통해서 트래픽이..