본문 바로가기

DevOps12

[AWS] Bot이 서비스를 공격한다? 어림 없게 해야지!! Bot이 Command Injeciton 시도를 하려는 정황이 발견되어, ALB WAF 구축하고 CloudWatch log 연동해 장기적 관점에서 보안 유지 보수를 용이하게 한 시스템 구축 과정을 소개하려 한다.(이제는 두괄식이 습관..) 문제 상황클로디 팀원들은 디코로도 소통을 하는데, 디코에 각종 200이 아닌 statusCode를 클라이언트에게 반환 시(특히 500은 매우 중요하므로) 알림이 가도록 되어있다. 그런데 최근 운영 서버 ip로 query string 방식의 이상한 무언가를 보내는 사건이 있었다. 아래와 같이 공격자가 서버에 악성 스크립트를 즉시 실행하도록 보내고 있던 것이다.그리고 공격자는 bot으로 짐작된다... ip 주소와 포트 번호를 brute force로 조합해서 매크로 마냥 난.. 2025. 11. 22.
[DevOps] Ansible 마스터하기 1편 : Ansible은 무엇인가 개발 및 인프라 자동화에 관심 갖고 이것저것 파보던 중, 지인을 통해 엔서블이라는 것을 알게 되었다. 그래서 시작하는 첫 시리즈 의 첫번째 게시글이다. 처음 IaC 개념을 접하던 것은 2024년 1학기이다. IaC를 혼자 막 해보면서 그 때 정말 재미있어 했던 기억이 있다.다시 지금, 개인적으로 공부해보고 싶었던 IaC를 다시 또 배워가고자 한다. 최근 엔서블을 들었을 때 아얘 모르던 용어라 잘못 들어서 "N-Server요?" 이런 반응을 내가 보였는데,,나처럼 엔서블에 문외한인 사람도 엔서블이 뭔지는 알 수 있도록 이해한걸 풀어보고자 한다. Ansible이란 무엇이고 왜 사용하는가Ansible은 IT 인프라를 자동으로 구성하고, SW를 배포하며 다양한 시스템 관리 작업을 수행하는 오픈소스 자동화 도구.. 2025. 9. 2.
[아산 두어스] AWS SQS 과금 비용 문의 후 환불 받기 문제 상황2025년 7월 16-17일에 거쳐 모든 이전 AWS 계정의 리소스를 해제하고 이관을 마쳤다.그런데 왜 AWS SQS 관련 과금이 청구되었을까AWS cost explorer를 봤는데 평소에는 백자리 대 요청이었는데 갑자기 1억 가까이 찍혔다 뭐가 문제일까 싶었는데 SQS를 삭제해두어서 관련 로그를 보기가 힘들었고, 어떻게 찾아볼 수 있을까 하다가 CloudTrail을 알게 되었다. AWS 로그 추적 : CloudTrail이번의 사건으로 AWS CloudTrail을 통해서 이용한 서비스에 대한 이벤트 로그를 확인할 수 있다는 것을 알게 되었다. SQS 트래픽이 현재 서비스를 이용하는 유저가 요청할 수 있는 수치를 너무 많이 초과하고 있었기 때문에Lambda나 EventBuilder를 통해서 SQS.. 2025. 8. 2.
[아산두어스] 다운타임 없이 서버 마이그레이션을 할 수는 없었을까 2025.07.16 클로디 서비스 다운타임 및 재정상화 과정 회고아산두어스 클로디 서비스를 위 날짜에 이전 AWS 계정에서 크레딧을 받는 AWS 계정으로 모든 인프라 설정 및 서버, DB 이관을 모두 완료했다.이 게시글은 어제 이관 완료 및 서비스 정상화 이후 과정을 돌이켜보면서 생각해본 단순 회고글이다. 다운타임을 결정한 이유프로젝트 특징 상 감사일기를 쓰면 AI가 답장을 해주는 구조이고, 일기를 쓰면 수정 및 삭제 시간을 고려해서 AWS SQS fifo 큐를 이용해서 2시간 동안 enqueue를 지속한다. 그리고 이 두 시간이 지나면 큐에서 out된 데이터를 가지고 로디와 통신하여 받은 응답을 DB에 저장한다. 즉, 일기를 쓰고 2시간이 지나야 DB에 데이터가 박히는... write 되는 것이다. 그.. 2025. 7. 17.
[DevOps] 윈도우 Docker Desktop WSL 설정 윈도우 포맷 사건으로 인해 모든 개발 환경 및 프로그래밍 언어를 다시 설치했었다. 그 중 Docker Desktop을 설치하는 과정에서 윈도우와 리눅스 간의 차이 때문에 도커 데스크 탑 실행이 되지 않는 문제(관리자 권한으로 실행해도 installer 설치 이후 실행 자체가 안되는 문제)를 해결한 경험을 기록으로 남기고자 한다. 문제 상황 : Docker Engine Stopped어라?왜 Docker 공식 홈페이지에서 윈도우 AMD64 버전의 installer를 다운받고 정상적으로 설치했는데 클릭해도 접속이 안되지?에서 문제는 시작한다. 도커 데스크탑이 열리는 것이 아니라 linux wsl 설정 창이 먼저 열렸다.이게 나오는 이유는?두괄식으로 먼저 말하자면, 내 윈도우 상에서 WSL 기반의 linux 환.. 2025. 5. 27.
[DevOps] Git Actions Self-hosted Runner로 배포 자동화 파이프라인 구축 문제 상황: SSH 타임아웃캡스톤 플젝에 대한 게시글! 일반적으로 AWS 클라우드 서버를 사용하는데 컴공과 캡스톤 수업의 경우 대학 측에서 교내 서버를 대여해 줄 수 있다고 했고, 우리 팀은 학교 NAT 환경에서 확인한 공인 IP로 승인을 받아 해당 IP로만 학교 서버에 접근이 가능한 상황이었다.이 상황에서 일반적인 AWS 기준의 배포 스크립트를 작성할 경우 나타났던 문제점과 해결 방안에 대해 기록하고자 한다. ssh 연결을 통한 접속을 해야했기에 교내 캡스톤 서버에서 ssh-keygen을 통해서 개인키와 공개키를 이미 만들어 둔 상황이었다.개인키공개키git secret로 관리개인 settings ssh key로 관리actions runner가 서버 ssh 접속할 수 있도록 함github이 서버로부터.. 2025. 4. 9.
[AWS] RDS를 cmd로 localhost에 복제하기 문제 상황2024년 2월부터 배포했던 프로젝트에서 AWS 프리티어가 이번달 (2025.02)에 종료가 되는 상황이다. 내가 2024년 2월에 시작했던 또 다른 프로젝트를 운영하면서 이용했던 rds를 따로 복제해두지 못한 것에 대한 후회가 남아 AWS의 서로 다른 RDS 인스턴스 간 Replication이 가능하지만 새로운 계정으로 서버 마이그레이션을 하기 전 이 서비스는 내 로컬 상에도 기록 용으로 복제를 해두고자 한다. 먼저 db 복제라는 것은 물리적 기기를 복제하는 것이 아니라 테이블간 관계, 그 내부의 운영 시 테이블 내 데이터 등 모든 정보를 "SQL" 파일로 만들어서 내가 원하는 db에 그 sql 파일을 그대로 실행하여 똑같은 db를 만드는 것이다. 특별한 rdb 툴 설치 없이(이제 윈도우 드라.. 2025. 2. 23.
[DevOps] Docker Compose 블루그린 무중단 배포 성공 도커와 로드밸런싱을 이용한 블루그린 무중단 배포를 학습하고 정리하는 게시글이다. (chatGPT가 대신 코드 짜준거 아님!!ㅎㅎ) 이에 대한 최종 PR 링크이다. 이 pr에 해당하는 프로젝트 이외에 다른 프로젝트에서 도커를 이용한 배포를 하였으나 약간 자신이 없는 버전이었었는데 pr 링크에서 하고 있는 프로젝트에서 정석대로 블루그린 배포를 구현해내고 블루그린 컨테이너가 번갈아 실행되는 부분까지 로그를 찍어가며 확인을 마쳤다. 오랜 기간 왜 안되는지에 대한 원인 파악을 했었는데 데브옵스로서 무중단 배포를 실현한 과정을 기록으로 남기고자 한다.  git action으로 CI/CD 파이프라인을 설계해서 배포를 진행하다보면 배포 때마다 shut down되는 현상이 발생한다. 왜냐하면 새로운 jar 파일을 실행하.. 2024. 8. 29.
[AWS] Nginx 502 해결 시행착오 Redis를 도입하여 성능 개선하려는 노력을 드디어 끝마쳤다!! 이 PR 링크에서 localhost redis 서버가 아니라 AWS 운영DB 목적의 Redis 구축까지 완료하여 배포된 코드를 확인할 수 있다. 현재 내가 구축한 REDIS를 도입하여 리펙토링한 프로젝트의 아키텍쳐는 아래와 같다. 아래 모식도에서  클라이언트에서 vpc로 진입하는 port는 8080이 아니라 3000(리액트)이다. 이 아키텍쳐를 구축하면서 가장 어려움을 겪었던 부분은 502 Gateway error 였다. Trial and Errorlocalhost에서 레디스 캐시를 통한 조회 API 성능 향상 및 로그인 시 RefreshToken을 redis에 저장하는 과정을 충분히 테스트를 거쳐 모두 200 ok를 확인했다면 이제 AWS.. 2024. 8. 18.
[AWS] CloudWatch로 Memory 모니터링 및 Email 경보 발송 이전에 EC2 프리티어 사양 문제(메모리)로 Out-Of-Memory Killer 상황을 swap memory를 도입하여 해결한 견적이 있다. 그래서 백엔드 내부 회의를 통해 AWS CloudWatch 경보 도입 및 Email 발송 기능 도입에 대한 이야기가 나왔고 이를 내가 실현해보게 되었다.  OOM Killer 문제의 본질적인 원인이 cpu 용량 부족이 아니라 메모리 부족이었기 때문에 메모리를 모니터링하고자 하였고 cloudwatch 삽질하면서 cpu 모니터링 경보도 생성해보았으나 df -h 명령어를 통해서도 파일 시스템 등의 용량 자체는 매우 넉넉히 남아 데이터 부족 문제가 떴었다. (모니터링할 데이터가 부족했다는 의미: 그만큼 cpu 용량은 굉장히 많이 남아있었다는 뜻)(cpu 모니터링을 하고자.. 2024. 7. 2.
[AWS] 프리티어 EC2 예기치 않은 중단 현상(feat. swap memory) DevOps 역할도 맡고 있는 벡엔드 프로젝트에서 AWS 관리를 내가 도맡고 있는데 매번 동일한 문제를 일시적으로 같은 방식으로 해결하다보니 항상 문제의 본질적인 원인이 해결되지 못한 채 주기적으로 같은 문제가 발생하고 있었다. 오늘 이에 대한 근본적인 해결책을 찾게 되어 정리하고자 한다. 문제 상황현재 AWS EC2는 프리티어 버전이다. 이 EC2 서버를 사용하는 도중 갑자기 돌연 서버가 멈춰버린다. 프론트 측에서 "스웨거가 안열려요..." 이렇게 콜이 오는데 그동안 나는 EC2를 재부팅하고 SSH 인바운드 규칙 편집으로 내 IP를 할당해서 SSH 연결을 통해 매번 재배포를 하는 방식으로 해결했었다. 하지만 위에서 언급했다 싶이,, 이 방법은 일시적이고 항상 또 스웨거가 안열린다는 연락이 주기적으로 오.. 2024. 6. 23.
[CICD] application 관리 submodule 문제를 git secrets으로 해결하기: DEV, PROD 분리 그동안 AWS RDS, S3, credentials와 같은 민감 정보를 Springboot project git 레포에 올릴 수가 없어서 .gitignore로 처리하였고 submodule을 이용해서 private repo access token을 git secret 상에 넣고 cicd pipeline에서 submodule 항목을 true로 설정하여 build시 submodule 내 코드들을 원하는 프로젝트 path로 복사하여 jar 파일을 만듦으로써 해결하였다. 그러나 dev에서는 jpa 속성을 update로 하는 것이 좋지만 prod 환경에서는 validate로 설정이 되어야했기에 이러한 부분까지 submodule로 분리하여 관리하는 것이 어렵다고 느껴져 submodule을 해제하고 git secret.. 2024. 5. 15.