Today I Laerned
날짜
2025년 2월 4일 화요일
내용
이름을 잘짓자
이번 웹훅 개선작업을 진행하면서 가장 뼈저리게 느끼는 부분이다. 그동안의 TIL에서도 꽤나 자주 말했던 부분이긴 한데, 타겟(?)이 약간 다르다. 그동안은 코드 내에서 함수나 변수 명명에 관한 이야기였다면 어제부터 오늘 느낀건 AWS 자원에 대한 이야기다.
첫번째 경험이다. 이번 웹훅 개선 작업에서 쓴 AWS Step Functions와 SQS는 처음 써보는 거라 이것저것 해볼 필요가 있었다. 안되는게 원래 안되는 건지 내가 못한건지 파악하랴, 있다느 기능을 어떻게 설정하는지 파악하랴, 이게 좋은지 저게 좋은지 파악하랴 만들다 삭제했다를 끊임없이 반복하다보면 이름따위는 안중에 두지 않게 된다. 왜냐면 ‘어차피 작동 되도 이건 삭제할거야. 잘 작동하면 이름 제대로 지어서 만들면 되니까’ 라고 생각하기 때문이다. 실제로 무조건 틀린 생각은 아니긴 한데.. 이번엔 틀렸다. 이번 웹훅 작업을 하면서 만든 AWS 자원을 보면
- Step Functions 상태머신 1개
- Lambda 8개
- ElastiCache 1개
- 보안 그룹 1개
- IAM 권한 3개
- SQS 큐 3개
다. 총 49개다(이게 테스트 서버에만 만든거니 실제론 스테이징 서버와 실서버 까지 X3해서 48개..). 구현하느라 이름 막 짓고 다시 다 만들려고 하니 진짜 막막했다.. 에너지 소모 시간 소모 장난 아니다. 그냥 처음부터 좀 잘 짓자. 람다는 뭐 다시 만드느니 마느니 할 수 있지만 그 외의 것들은 좀 잘 짓자.
오늘 TIL에 이걸 쓰게 된 건 두번째 문제가 상당히 큰데, 서브넷의 문제다. 이전 아임리포트 구현 때 람다를 구현해본 경험이 있었기 떄문에 VPC 내부에 생성한 람다의 서브넷 설정에 대해선 알고 있었다. 프라이빗 서브넷 설정 후 퍼블릿 서브넷에 배치된 NAT 게이트웨이 연결해주면 된다.
오늘 이게 안먹혔다. 나는 분명 프라이빗 서브넷에 람다를 할당했고, NAT 게이트웨이도 분명히 있다. 근데 통신이 제대로 안된다. 이것 저것 온갖 곳을 다 뒤지다가 2시간만에 발견한게, 프라이빗 서브넷이 프라이빗 서브넷이 아니라는 사실이었다.
퍼블릭 서브넷과 프라이빗 서브넷을 나누는 기준은 외부 인터넷과 통신할 수 있냐 없냐의 차이인데 이건 바꿔말하면 ‘인터넷 게이트웨이’와 연결되어 있냐로 말할 수 있다. 분명 내가 할당한 서브넷의 이름이 프라이빗 서브넷인데 인터넷 게이트웨이에 연결이 되어있다. NAT게이트웨이에 연결된 진짜 프라이빗 서브넷(하지만 이름은 퍼블릭 서브넷인)이 존재하고 있었다. 그녀석한테 연결하니 아무 잘 작동한다. 홍철없는 홍철팀도 아니고…
결론은 이름을 잘짓자. 내가 기존에 람다의 서브넷 연결 경험이 없었다면 난 아마 울었을거다.
회고
회고
개발자의 최고 덕목은 가까운 집보단 이름짓는 창의력이 아닐까?