모든 포스트
GitHub Actions 강좌 #3 시크릿·변수·환경: secrets vs vars, environment 승인 관문
워크플로에 비밀 값과 설정값을 넣는 두 통로인 secrets와 vars의 구분 기준과 조직, 저장소, environment 세 계층의 우선순위를 정리합니다. 로그 마스킹이 보호해 주는 것과 과신하면 안 되는 이유, environment의 보호 규칙으로 배포 앞에 승인자와 대기 시간을 거는 방법, 자동 발급되는 GITHUB_TOKEN의 정체까지 다루겠습니다.
GitHub Actions 강좌 #2 문법 핵심: 컨텍스트와 표현식, if 조건, 값 전달
워크플로 YAML의 문법을 체계적으로 잡습니다. github, env, steps 같은 컨텍스트와 표현식 문법, if 조건과 success·failure·always 함수로 스텝을 골라 실행하는 방법을 다루고, GITHUB_OUTPUT으로 스텝 사이에 값을 전달하는 법과 needs·outputs로 잡 사이의 순서와 데이터를 연결하는 법까지 정리하겠습니다.
메모리가 남는데 OOM으로 죽는 이유: 오버커밋, cgroup, OOM 킬러
free로 보면 메모리가 남는데 프로세스가 OOM으로 죽는 역설을 풀어냅니다. 리눅스가 메모리를 약속만 하고 나중에 지급하는 오버커밋의 원리, free와 available의 차이와 페이지 캐시, 시스템 전체가 아니라 cgroup 한도에 걸려 죽는 컨테이너 시대의 OOM(137, OOMKilled), 희생자를 고르는 oom_score의 계산, dmesg와 kubectl로 사인을 확인하는 법, 그리고 한도·요청값 설계까지 다룹니다.
GitHub Actions 강좌 #1 워크플로의 구조: 이벤트, 잡, 러너, 그리고 첫 실행
푸시할 때마다 손으로 반복하던 테스트와 빌드를 자동화하는 GitHub Actions의 뼈대를 잡습니다. 워크플로, 이벤트, 잡, 스텝, 러너라는 다섯 개념의 관계를 정리하고, 파이썬 테스트를 돌리는 첫 워크플로를 작성해 Actions 탭에서 결과를 읽는 법과 상태 배지까지 다루겠습니다. 트리거 이벤트의 종류와 러너의 무료 한도도 함께 짚습니다.
NumPy 입문: 배열이 파이썬 리스트보다 빠른 이유와 기본 사용법
데이터 작업의 기반 라이브러리 NumPy를 원리부터 정리합니다. 파이썬 리스트가 느릴 수밖에 없는 메모리 구조와 ndarray가 그것을 해결하는 방식, 루프를 없애는 벡터화 연산, 모양이 다른 배열끼리 계산되는 브로드캐스팅의 규칙, 슬라이스가 복사가 아니라 뷰라서 생기는 함정, axis 개념으로 읽는 집계, 그리고 NumPy를 쓰지 않는 것이 나은 경우까지 다룹니다.
Teams 봇 입문: Bot Framework와 Graph API의 역할 구분
Teams에서 대화형 봇을 만들 때 필요한 구성 요소를 정리합니다. Graph API만으로 봇을 대신할 수 없는 이유(봇 정체성·앱 권한 제약), Azure Bot 리소스와 메시징 엔드포인트로 이루어진 봇의 동작 구조, 사용자가 먼저 말을 걸지 않아도 메시지를 보내는 선제 메시지와 대화 참조·선제 설치 우회, 멘션 없이 채널 메시지를 읽는 RSC 권한, 어댑티브 카드까지, 알림 봇에서 대화형 봇으로 가는 길을 다룹니다.
terraform.tfstate 삭제했을 때 복구하는 법: 백업 파일, S3 버저닝, 재임포트 순서
state 파일이 사라졌을 때 나타나는 증상과 그대로 apply 하면 안 되는 이유부터 정리합니다. 로컬 terraform.tfstate.backup 확인, S3 버저닝에서 이전 버전을 복원하는 명령, 백업이 전혀 없을 때 import로 state를 재구축하는 마지막 경로까지 우선순위대로 다루고, 같은 사고를 구조적으로 막는 백엔드 설정을 정리하겠습니다.
Power Automate vs Graph API: 업무 자동화, 언제 무엇을 쓰나
Microsoft 365 자동화의 두 경로를 비교합니다. 커넥터를 조립하는 로우코드 도구 Power Automate와 코드로 직접 호출하는 Graph API가 각각 잘하는 것, 트리거·승인 흐름·시민 개발이라는 Power Automate의 강점과 볼륨·복잡도·버전 관리에서 드러나는 한계, 프리미엄 커넥터와 라이선스라는 숨은 변수, 그리고 두 도구를 섞어 쓰는 실무 분업 기준까지 다룹니다.
terraform import 사용법: import 블록으로 기존 리소스를 코드로 가져오기
콘솔에서 만든 리소스를 테라폼 관리로 가져오는 절차를 import 블록 기준으로 정리합니다. 리소스별 import ID를 찾는 위치, -generate-config-out으로 코드 초안을 생성하는 방법, plan이 변경 없음이 될 때까지 코드를 실제에 맞추는 요령, 옛 CLI 명령 방식과의 차이와 여러 리소스를 한 번에 편입할 때의 순서까지 다루겠습니다.
Microsoft Graph로 Excel 리포트 자동화: 세션, 테이블, 차트 이미지
Excel 파일을 열지 않고 코드로 읽고 쓰는 Graph의 workbook API를 정리합니다. 매 호출 파일을 다시 여는 비효율을 없애는 세션의 세 가지 모드와 persistChanges의 의미, usedRange와 테이블로 데이터를 읽고 행을 추가하는 법, 차트를 만들고 이미지로 뽑아 리포트에 넣는 법, 위임 권한 중심이라는 Excel API 특유의 권한 제약과 실무 우회, 만료·재시도 같은 운영 주의점까지 다룹니다.
terraform state lock 에러 해결: 원인 확인과 force-unlock 판단 기준
Error acquiring the state lock 에러의 Lock Info를 읽는 법부터 정리합니다. 동료나 CI가 실행 중인 정상 상황과 비정상 종료로 잠금만 남은 상황을 구분하는 확인 절차, force-unlock을 써도 되는 조건과 잘못 쓰면 state가 손상되는 이유, DynamoDB 잠금 방식일 때의 확인 위치와 재발 방지 설정까지 다루겠습니다.
테라폼 운영 강좌 #7 OpenTofu와 라이선스: BSL 전환, IBM 인수, 선택 기준
2023년 BSL 라이선스 전환과 OpenTofu 포크의 경위, CNCF 채택과 IBM의 HashiCorp 인수까지 이어진 지형 변화를 시간순으로 정리합니다. BSL이 실제로 금지하는 것과 대부분의 사용자에게 무관한 이유, 두 도구의 기능 분기 현황, 조직 상황별 선택 기준과 마이그레이션 시 확인 사항을 다루고, Associate 자격증 안내와 함께 테라폼 트랙 전체를 마무리하겠습니다.