최종 대결에 오신 것을 환영합니다! Git 태그와 AWS 태그, 두 경쟁자는 “tag“라는 단어에 대한 사랑 외에는 아무런 공통점이 없습니다. 이제 그들을 맞붙여 혼란과 유용성의 전투에서 누가 이기는지 알아보겠습니다!
1라운드: 그들이 누구인가
Git 태그
소프트웨어 세계의 역사기록자입니다. 현재에는 관심이 없고, 중요한 이벤트(예: 릴리스)를 북마크하여 시간을 거슬러 여행할 수 있게 해줍니다. 그들을 버전 관리 타임머신이라고 생각해보세요 — 과거의 코딩 실수를 만날 위험 없이… 아, 잠깐. v1.0.0-final-final-definitely-final-this-time! 디버깅 잘 하세요!
AWS 태그
너무나 조직적인 사무실 관리자는 EC2 인스턴스, S3 버킷, 그리고 매달 $500의 비용이 드는 잊혀진 Lambda 함수까지 모든 것에 라벨을 붙이고 싶어합니다. AWS 태그는 인생 전체를 색상으로 코딩하는 그런 친구와 같습니다… 하지만 그들이 잊어버리면 이제는 아무도 무엇이 무엇인지 모릅니다.
2라운드: 그들이 하는 일
Git 태그
- 중요한 커밋(예: v1.0.0, production-release)을 표시하는 데 도움을 줍니다.
- 소프트웨어 릴리스의 버전 관리에 사용됩니다.
- 경량일 수도 있고(그냥 라벨) 주석이 달린 라벨(역사 수업이 포함된 라벨)일 수도 있습니다.
- 한 번 푸시되면, 그것들은 부끄러운 트윗과 같습니다 — 삭제하기 어렵습니다! (후회할 겁니다.)
AWS 태그
- AWS 리소스에 키-값 쌍을 추가하는 데 도움을 받으세요 (환경: 프로덕션, 소유자: 램)
- 비용 추적, 조직화 및 규정 준수에 사용됩니다
- 의무적이거나 선택 사항일 수 있습니다 (상사의 지시가 있을 경우)
- 매달 예측할 수 없는 AWS 청구서와는 달리 쉽게 수정할 수 있습니다 (돈 털기에서의 전개와 비슷한 예측할 수 없는 장면)
라운드 3: 현실 반응
Git 태그 사용자
“릴리스를 태깅했다! 아, 기다려, 이름을 바꿔야 해. 아니… 아니… 아이고.” (스포일러: 태그 이름을 바꾸는 것은 세 년째 애완 동물의 이름을 바꾸는 것보다 어렵습니다.)
AWS 태그 사용자
“누가 ‘삭제’라는 이름으로 EC2 인스턴스에 태그했지?! 아, 내 EC2가 어디로 갔지?!” (진정한 호러무비: AWS 청구서 및 실수로 삭제된 것들.)
라운드 4: 무시할 경우 어떻게 될까요?
Git 태그 무시
- 당신의 릴리스는 신비롭습니다. v1.2가 fix-bug-final-final2보다 먼저인가요 뒤인가요?
- 프로덕션 디버깅이 시간 여행 역설이 됩니다.
- DevOps/릴리스 엔지니어링 팀은 자신의 삶의 선택을 의심하며 인터넷이 차단된 지역으로 이사할지 고민합니다.
AWS 태그 무시
- FinOps 팀은 AWS 청구서를 보고 울고 있습니다 (당신도 마찬가지입니다).
- 어떤 인스턴스가 테스트 환경이고 어떤 것이 프로덕션인지 아무도 모릅니다.
- 당신이 CIO의 즐겨찾는 대시보드를 실수로 종료시킵니다. 어이쿠!!! (이력서를 업데이트할 시간입니다!)
라운드 5: 두 가지 태그 추가하기
Git 태그
- 경량 태그를 만들려면
git tag v1.0.0
을 사용하세요. - 주석이 있는 태그를 만들려면
git tag -a v1.0.0 -m "버전 1.0 출시"
를 사용하세요. - 다음과 같이 푸시하세요:
git push origin v1.0.0
. - 잘못된 커밋에 태그를 달았나요? 축하합니다, 모험이 시작됩니다!
- 로컬인 경우
git tag -d v1.0.0
을 사용하고 git push --delete origin v1.0.0
(원격인 경우)으로 혼란을 되돌리세요.
- 로컬인 경우
- 1000000개의 저장소에서 태그를 제거하는 것이 답답하신가요? 자동화를 사용하는 것이 도움이 될 수 있습니다 (Jenkins의 간단한 스크립트가 많은 시간과 정신적 평화를 절약할 수 있습니다).
AWS 태그
- AWS CLI를 사용하여:
AWS CLI: aws ec2 create-tags --resources i-1234567890abcdef0 --tags Key=Environment,Value=Production
. - AWS 콘솔에서 EC2나 S3와 같은 리소스로 이동하여 “태그” 탭 아래에 키-값 쌍을 수동으로 추가하세요.
- AWS 조직을 사용하여 태그 지정 정책을 자동화하고 태그 지정 군주처럼 이를 시행하세요.
- 리소스에 태그를 달기를 잊으셨나요? AWS 청구서가 상기시켜 줄 것입니다. 고통스럽게도.
라운드 6: 고급 태깅 기술
고급 Git 태깅
- 모든 태그 목록 보기:
git tag -l
- 특정 커밋에 태그 추가하기:
git tag -a v2.0.0 <commit-hash> -m "Version 2.0 release"
- 서명된 태그 확인하기:
git tag -v v1.0.0
- 태그를 다른 커밋으로 이동하기:
git tag -f v1.0.0 <new-commit-hash>
- 모든 태그를 원격으로 공유하기:
git push --tags
고급 AWS 태깅
- 리소스에 대한 모든 태그 목록 보기:
aws resourcegroupstaggingapi get-resources --tag-filters Key=Environment,Values=Production
- 여러 리소스에 동시에 태그 추가하기:
aws ec2 create-tags --resources i-1234567890abcdef0 i-0987654321abcdef0 --tags Key=Project,Value=MyApp
- 태그 제거하기:
aws ec2 delete-tags --resources i-1234567890abcdef0 --tags Key=Environment
- AWS 콘솔에서 대량 태깅을 위해 AWS 태그 편집기 사용하기.
- AWS Lambda 함수를 구현하여 모든 리소스에 대한 태깅 준수 강제하기.
7라운드: 존재론적 태깅 위기
- 언젠가는 모든 엔지니어가 묻습니다: 태그는 중요한가요? 대답은 예입니다 — 중요할 때까지. 언젠가, 수년간의 Git 기록을 뒤져보면서 누군가가 커밋을
final-final-v2-fix-thatworks-for-sure-this-time
로 태그한 이유를 궁금해할 것입니다. 또는Production
으로 태그된 EC2 인스턴스를 발견하고, 그 기능을 아무도 기억하지 못한다는 사실을 깨닫게 될 것입니다. - 태깅은 사무실 냉장고에 음식을 라벨링하는 것과 같습니다. 조직을 위해 중요하지만 완전히 무시될 수도 있습니다. 예전 배포를 찾거나 비싼 AWS 청구서를 정당화하려고 할 때 모든 것이 재미있고 게임 같습니다.
- 따라서 조심해서 태깅을 받아들이세요. 오늘 하나의 추가 라벨은 내일 대형 위기를 막아줄 수도 있습니다. 또는 적어도 매니저와 매우 어색한 대화를 나눌 수 있습니다.
판결
그래서 누가 이기는 걸까요? 두 가지가 이미 언급했듯이 그들의사랑에 대한 공통점이 없다면, “태그라는 단어에 대한애정을 제외하고요.
- 역사적 정확성과 잘 문서화된 코드 릴리스를 좋아한다면, Git 태그가 당신의 가장 친한 친구입니다.
- 돈이 어디로 가는지 추적하는 것을 좋아한다면 (또는 적어도 그렇게 하는 척 하는 것을), AWS 태그는 필수불가결합니다.
어떤 방식이든, 태그는 노래하지 않는 기술 영웅들입니다 — 그들이 그렇지 않은 한. 그래서 다음에 무언가를 태깅할 때, 잘못된 한 가지 움직임으로 미래가 매우 혼란스러워질 수 있다는 것을 기억하세요.
태깅을 즐기세요!
Source:
https://dzone.com/articles/git-tags-vs-aws-tags-a-tag-tastic-showdown