

최근 AWS Certified Solutions Architect - Associate, 흔히 SAA-C03라고 부르는 자격증을 취득했습니다. 점수는 783점으로, 아주 높은 점수는 아니지만 목표했던 1주일 안에 합격할 수 있었습니다.
그동안 저는 프론트엔드 개발을 많이 진행하면서 상대적으로 놓치고 있던 인프라, 클라우드, 아키텍처에 대한 감각을 조금 더 넓히고 싶다는 생각이 컸습니다.
특히 NAVER LABS에서 인턴을 하며 이전보다 훨씬 넓은 범위의 개발을 경험하게 되었고, 자연스럽게 “기능을 잘 구현하는 것”을 넘어 “이 시스템은 어떤 구조로 운영되는가?”, “장애가 났을 때 어디서 문제가 생길 수 있는가?” 같은 질문을 많이 하게 되었습니다.
그런 고민을 하던 시기에 『가상 면접 사례로 배우는 대규모 시스템 설계 기초』라는 책도 함께 읽고 있었고, 시스템 아키텍처에 대한 관심이 점점 커지던 중이었습니다. 그래서 AWS SAA-C03 자격증 공부가 단순히 자격증 하나를 따기 위한 공부라기보다, 제가 가지고 있던 아키텍처에 대한 관심을 조금 더 체계적으로 공부해볼 수 있는 기회가 될 것 같았습니다.
물론 SAA-C03 시험은 AWS 서비스들을 중심으로 구성되어 있습니다. 그래서 엄밀히 말하면 “AWS 위에서 문제 상황을 어떻게 해결할지 판단하는 연습”에 가깝습니다. 그런데 저는 오히려 그 점이 꽤 재밌었습니다.
문제 안에는 대부분 어떤 운영상의 제약이 숨어 있습니다. 비용을 줄여야 하는지, 장애 복구 시간이 중요한지, 데이터 일관성이 중요한지, 보안 요구사항이 강한지, 관리형 서비스를 선호하는지 같은 조건들이 함께 주어집니다. 그래서 문제를 풀면서 자연스럽게 실제 운영 환경에서 발생할 수 있는 문제들을 간접적으로 경험하는 느낌이 들었습니다.
“이런 상황에서는 왜 이 선택지가 더 적절할까?”를 고민하다 보면, 단순히 AWS 서비스를 외우는 것이 아니라 시스템을 바라보는 관점 자체가 조금씩 넓어지는 것 같았습니다.
공부 기간은 약 1주일 정도였습니다. 먼저 인프런의 SAA-C03 벼락치기 강의를 수강했습니다.
제가 선택한 강의는 비교적 짧은 시간 안에 시험에 필요한 핵심 개념을 정리해주는 강의였습니다. 사실 SAA-C03 관련 강의 중에는 20시간이 넘는 강의도 많았는데, 저는 이미 AWS의 기본적인 개념은 어느 정도 알고 있었고, 인턴을 하며 아키텍처에 대한 관심도 생긴 상태였기 때문에 긴 강의를 처음부터 끝까지 듣는 것은 조금 비효율적이라고 생각했습니다.
다만 강의만으로는 솔직히 부족하다고 느꼈고 불안했습니다…😅 SAA-C03은 개념을 아는 것만큼이나 문제를 읽는 능력이 중요한 시험이라고 생각합니다. 문제 길이가 꽤 길고, 선택지도 비슷해 보이는 경우가 많습니다. 그래서 단순히 개념을 외우는 것보다, 문제 안에서 핵심 조건을 빠르게 파악하는 연습이 필요했습니다.
이를 위해 온라인에 공개된 무료 연습 문제들을 많이 풀었습니다. 대략 500문제 정도 풀었던 것 같습니다. 문제를 풀면서 틀린 문제는 단순히 답만 확인하지 않고, 왜 다른 선택지는 안 되는지를 보려고 했습니다. 사실 이 과정이 가장 도움이 많이 됐습니다. AWS 시험은 문제를 잘 읽고 “덜 적절한 선택지를 제거하는 시험”에 가깝다고 느꼈습니다.
비슷해 보이는 선택지 중에서 어떤 것은 비용이 너무 비싸고, 어떤 것은 운영 부담이 크고, 어떤 것은 보안 요구사항을 만족하지 못합니다. 이런 차이를 구분하는 연습을 하다 보니 문제를 읽는 방식도 조금씩 달라졌습니다.
강의에서 다룬 주요 개념들이 꽤 많이 나왔습니다. 다만 IAM 역할과 정책에 대해 조금 더 깊게 공부했으면 더 안정적으로 풀 수 있었을 것 같다는 생각이 들었습니다.
사실 이 자격증을 취득했다고 해서 제가 갑자기 클라우드 아키텍처를 잘 이해하게 되었다고 생각하지는 않습니다. SAA-C03은 어디까지나 입문에 가까운 시험이고, 실제 운영 환경에서의 아키텍처 설계는 훨씬 더 복잡할 것입니다.
그럼에도 불구하고 이번 공부는 저에게 꽤 의미 있는 경험이었습니다. 지금까지 저는 주로 사용자가 직접 마주하는 화면과 기능을 중심으로 개발해왔습니다. 하지만 이번 공부를 하면서 그 뒤에 있는 네트워크, 보안, 데이터 저장, 장애 복구, 비용 최적화 같은 요소들을 함께 바라보게 되었습니다. 말하자면 소프트웨어의 “거시세계”를 조금 볼 수 있게 된 것 같습니다.
그리고 이 경험은 단순히 클라우드 아키텍처를 이해하는 데서 끝나지 않을 것 같습니다. 결국 개발을 할 때도 오류가 잘 발생하지 않는 코드, 변경에 유연한 코드, 확장 가능한 구조를 고민하는 일은 모두 작은 단위의 아키텍처라고 생각합니다.
어떤 서비스를 선택하고 조합할지 고민하는 것처럼, 코드 안에서도 어떤 책임을 어디에 둘지, 어떤 의존성을 줄일지, 어디까지 추상화할지 계속 판단해야 합니다. 이번 공부를 통해 그런 고민들이 서로 분리된 것이 아니라 연결되어 있다는 것을 느꼈습니다.
앞으로는 기능을 구현하는 데서 멈추지 않고, 그 기능이 더 안정적으로 동작하고 오래 유지될 수 있는 구조까지 함께 고민하는 개발자가 되고 싶습니다.