Argo Workflows 이용해 보기

예전에 여러 단계가 있는 작업을 해야 할 때 AWS의 Step Functions를 이용한 적이 있었습니다. Step Functions의 경우, Lambda 함수를 연결해서 쓴 적이 많았고, 오래 걸리는 작업은 다른 방법으로 구축할 수 있습니다. (이전에 올렸던 Python으로 Step Functions 활동 만들기 문서를 참고해 주세요) 한편, 다른 방법은 없나 찾아보다가 Airflow를 알게 되었습니다. 그래서 Airflow도 테스트한 적이 있었는데요. (이전에 올렸던 데이터 분석 워크플로우를 처음부터 만들어 보기 1편, 2편을 참고해 주세요) 최근 우연하게 Kubernetes에서 Workflow를 관리할 수 있는 Argo Workflow에 대해 알게 되었습니다.

EKS에서 ASCP로 Parameter Store/Secrets Manager 이용하기

배경 어떤 애플리케이션이든 민감한 정보를 관리할 필요가 있습니다. DB에 연결하기 위한 사용자 정보 및 비밀번호가 필요할 것이고, 외부 API를 호출하기 위해 API 키가 필요할 수도 있죠. 이러한 정보를 관리하는 방법에는 여러 가지가 있는데요. 이번에는 EKS 클러스터가 있다고 가정하고, AWS의 Parameter Store, Secrets Manager에 있는 값을 어떻게 Pod에 넣을 수 있을지 살펴 보겠습니다. 준비하기 AWS CLI 설치 kubectl, helm 설치 EKS 클러스터: 콘솔에서 생성하거나 eksctl과 같은 툴로 생성해 주세요. (테스트 후 비용 문제로 클러스터는 꼭 삭제해 주시기 바랍니다.

Amazon Q로 간단한 API 만들어 보기 (with Go)

배경 인프라를 관리하다 보면, 수동으로 하는 일을 자동화 할 수 있는 방법을 고민할 것입니다. 그래서 인프라 구성을 코드로 관리하기도 하고, 간단한 스크립트나 프로그램을 만들기도 합니다. 그 중에서도 “스크립트로 제공하는 것들을 API로 만들어 보면 어떨까?” 라는 생각을 했는데요. DevOps나 SRE 분야에서 사용하는 도구들이 Go(Golang)으로 만든 경우가 많아서 Go를 선택하였습니다. 찾아 보니 Go를 이용한 웹 프레임워크로는 Gin과 같은 것들이 있더라구요. 이를 활용해서 간단한 API를 만들어 보려고 합니다. (에디터로는 Visual Studio Code를 이용합니다)

커리어 10 주년 회고

대학을 졸업하고 사회에 나온 지 딱 10 년이 되었습니다. 대학 시절의 전공은 지금 하는 일과 거리가 멀지만, 복수전공 후 IT 업계로 전직한 계기를 설명하자면 글이 길어질 듯 하여 생략하겠습니다. 사실 갑자기 IT 업계에 관심이 생겨서는 아니었고, 예전부터 코드로 프로그램을 만드는 데 관심이 있기는 했습니다. (관련기사 - 직접 인터뷰 한 건 아니고, 공개된 정보를 통해 작성된 기사) 그래서 중학생 때까지는 장래희망에 프로그래머라고 계속 적었던 기억이 있습니다. 한참 돌아서 오기는 했지만, 결국 IT 업계에서 일하게 되었고 10 년 간 여러 가지 업무를 해 왔네요.

IP 주소로부터 여러 가지 정보를 가져오기

들어가며 인터넷 서비스를 운영하다 보면 DDoS 공격을 받는 경우가 종종 있습니다. 해킹 목적으로 사이트를 공격한다거나, 경쟁사를 견제하기 위한 목적으로 DDoS 공격을 하는 사례가 있습니다. 그 외에도 실수로 API 호출을 너무 많이 하는 바람에 의도치 않게 상대 서비스를 다운시키는 경우도 있겠죠. 이러한 DDoS 공격을 막기 위해, 클라우드 벤더에서 제공하는 기능이나 여러 회사에서 제공하는 솔루션 제품들을 사용할 수 있습니다. 이번 글에서는 공격에 사용된 IP 주소 목록이 있을 때, IP 주소의 세부 정보를 얻을 수 있는 방법에 대해 이야기 해 보고자 합니다.

2023년 하반기 이직 후기

2022년 펜타포트 락 페스티벌에서 찍은 ‘퇴사’ 깃발. 퇴사 기념 짤로 쓰고 싶었는데 실패했네요. (이 깃발은 올해에도 등장했습니다) 회사 상황이 어려워져서 재직 중이던 회사를 떠나게 되었습니다. 이에 의도하지 않은 이직을 하게 되었는데요. 조금 급하게 이직을 한 감이 있지만, 그 과정을 돌아보려고 합니다. 그리고 앞으로 어떻게 커리어를 이어 나갈지에 대해 고민한 내용도 이야기 해 보고자 합니다. 요약 금번 이직 과정을 정리한 구글 시트. 회사명과 담당자(리크루터, 헤드헌터, 자체 지원)는 숨김 처리 하였습니다.

EKS에 올린 Spring Boot 애플리케이션에 IAM Role 연결하기

최근 EKS에 Spring Boot 애플리케이션을 올렸는데, ServiceAccount에 IAM Role을 연결했음에도 AWS API를 호출하지 못하는 문제가 있었습니다. 이 문제를 해결하기 위해 테스트 한 과정을 남겨보려고 합니다. 우선, AWS의 Java 버전 SDK는 부여된 권한을 어떻게 찾는지 알아보겠습니다. 따로 설정을 하지 않았다면, 아래와 같은 순서로 찾습니다. Java의 시스템 properties 환경 변수 AWS의 STS(Security Token Service)로 부터 얻은 Web Identity Token 공유된 credentials, config 파일: 별도의 설정이 없으면 default 프로필을 이용 ECS 컨테이너 credentials EC2 인스턴스에 부여된 IAM Role 그리고 EKS의 IAM Roles for Service Accounts(이후 IRSA로 표기) 기능은 STS(Security Token Service)의 AssumeRoleWithWebIdentity API 호출을 통해 권한을 얻습니다.

런던 음반 매장 여행기

최근에 런던 여행을 다녀 왔습니다. 이번 런던 여행은 두 가지 목적이 있었습니다. 첫번째는 프리미어 리그를 보러 가는 것이었고, 두번째는 음반 가게를 구경하며 제가 갖고 싶었던 것들을 구해오는 것이 목표였습니다. 마침 제가 여행을 다녀온 주에 토트넘과 브라이튼의 경기가 있어서 관람했는데요. 그 경기에서 손흥민 선수가 프리미어 리그 100번째 골을 넣었죠. 이번 이야기는 두번째 목표를 이루기 위해 떠난 여정을 설명드리고자 합니다. 사실 런던에는 정말 많은 음반 매장이 있고, 이걸 모두 설명해 드리는 데는 한계가 있을 것입니다.

Terraform Workspaces 기능 정리

Terraform에서 개발/운영 환경을 나누기 위해, 폴더/디렉터리를 이용할 때가 있습니다. 하지만 이런 상황도 있죠. 개발/운영 환경 내 staging/QA 환경이 필요한 경우 테스트를 위해 임시 인프라 구성이 필요한 경우 위와 같은 상황에 대응하기 위해, Terraform에서는 Workspaces 라는 기능을 지원합니다. 이번에는 Terraform의 Workspaces 기능은 무엇인지, 어떻게 사용하면 되는지 알아보려고 합니다. Workspaces를 사용하려면? Terraform에서 관리하는 리소스 상태는 backend에 저장합니다. 이러한 데이터는 하나의 workspace에 속합니다. 기본적으로 이런 리소스 상태는 default workspace에 들어 있습니다. 몇몇 backend는 여러 개의 workspace를 지원하며, 하나의 설정과 연결된 여러 상태를 저장할 수 있습니다.

2022년 회고 - 팀 운영 후기

2022년은 우여곡절이 있었던 해였습니다. 주변의 여러 상황 때문에 팀 리더라는 직책을 맡게 되었습니다. 사실 재직 중인 회사에 입사하면서 고려했던 부분은 아니었습니다. 지난 회사에서도 팀 빌딩 경험이 있다 보니, 이번에는 피하고 싶다는 생각이 있었기 때문입니다. 그렇지만, 회사 생활이라는 것이 제 마음대로 되는 게 아니더라구요. 다행히 제가 요청한 대로 TO가 나왔고, 계획에 맞게 인원을 뽑을 수 있었습니다. 올해 회고는, 1인 팀에서 세 명으로 팀을 키운 이야기, 그리고 이를 바탕으로 1년 간 팀을 운영했던 이야기를 해 보고자 합니다.