AWS 기술 블로그
사람인의 Amazon Q Developer 도입기: VDI 환경에서 보안과 생산성을 동시에 달성한 여정
주식회사 사람인은 대한민국 커리어 플랫폼 사람인을 운영하며, 사람중심 철학과 AI 기술력을 바탕으로 국내 HR 업계를 선도하고 있습니다.
사람인 IT 팀은 최근 Amazon Q Developer를 도입하여 보안과 생산성을 동시에 달성하는 성과를 이루었습니다. Amazon Q Developer는 AWS에서 제공하는 AI 에이전트 기반 코딩 어시스턴트로, 실시간 코드 생성, 디버깅, 최적화 제안을 통해 개발 효율성을 향상시킬 수 있도록 지원합니다.
사람인 내 일부 개발팀은 보안 정책상 VDI 내 설치된 IDE만 사용해야 하는 보안 요구사항이 있어, 외부 인터넷 연결이 필요한 대부분의 시중 AI 코딩 어시스턴트 제품을 도입하기 어려운 상황이었습니다. 이러한 상황에서 AWS 서비스와의 연동으로 VDI와의 프라이빗 연결 구성이 가능한 Amazon Q Developer 도입을 통해 보안과 개발 생산성을 동시에 확보할 수 있었습니다.
이 블로그에서는 사람인이 Amazon Q Developer를 결정하고 도입하기까지 AWS 및 파트너사 GS Neotek과의 협업 과정과, AWS 아키텍처 구성을 통해 VDI 내에서 안전한 보안 연결을 유지하며 동시에 개발자 생산성을 크게 향상시킬 수 있었던 여정을 상세히 공유합니다.
도입 배경
사람인 IT 팀은 개발자 개인이 선호하는 AI 코딩 어시스턴트 제품을 자유롭게 선택해 구독할 수 있도록 지원하고 있습니다. 그러나 AI 코딩 어시스턴트 제품을 사용하는 과정에서 아래와 같이 몇 가지 애로사항이 존재했습니다.
- 대부분의 AI 코딩 어시스턴트 제품이 외부 인터넷을 통해 요청과 응답을 전달하는 구조를 띄고 있기 때문에 개발팀의 코드가 외부 인터넷에 노출되는 것에 대한 보안 우려가 존재했으며,
- 조직 내 일부 개발팀은 보안을 위해 VDI 내의 제한된 네트워크 환경에서 IDE에 접근해 작업을 진행해야 했으므로, 기존 퍼블릭 인터넷 기반으로 동작하는 코딩 어시스턴트 제품 사용이 불가능한 상황이었습니다.
- 또한 개발자 개인이 AI 제품을 통해 어떤 작업을 진행하는지를 중앙에서 알기 어렵다는 관리적 한계가 있었습니다.
이에 AWS와의 협업을 통해 VDI 내에서의 Amazon Q Developer 도입을 검토하게 되었습니다. Amazon Q Developer는 AWS 인프라 내에서 동작하며 엔터프라이즈급 보안 기능을 제공하고, VDI 환경에서도 안정적으로 작동할 수 있도록 AWS 네트워크/보안 서비스와 연동하여 인터넷 노출이 없는 Private 연결 구성이 가능합니다. 또한 Amazon CloudWatch와 같은 모니터링 서비스와 연동이 쉬워 사용량 모니터링과 정책 관리가 가능하다는 점도 사람인 개발팀의 요구사항과 잘 부합했습니다. 이러한 배경 하에 사람인 IT 팀은 VDI 환경 내에서 Amazon Q Developer를 안전하게 도입하기 위한 프로젝트를 시작하게 되었습니다.
상세 도입 과정
1. 아키텍처 설계
가장 먼저, On-premise에 구현되어 있는 사람인의 VDI 환경과 AWS 인프라 위에서 동작하는 Q Developer 사이 프라이빗 네트워크 구성을 위해 아키텍처를 설계했습니다.
현재 Q Developer Pro 티어의 경우, us-east-1 리전에서만 엔드포인트를 제공하고 있습니다. 그러므로 On-premise VDI 서버에서 요청을 보내면 us-east-1 리전의 Q Developer 엔드포인트로 요청이 전달되어야 하는데, 이 때 거치는 전 구간을 프라이빗하게 연결하려면 아래 3가지의 구간을 고려해야 했습니다.
- 구간 1: On-premise 서버에서 AWS 리전으로의 데이터 전송
- 구간 2: AWS 리전 간 데이터 전송 (예: ap-northeast-2 리전에서부터 Q Developer 엔드포인트가 있는 us-east-1 리전으로의 전송)
- 구간 3: 한 리전 내 VPC와 Q Developer 엔드포인트 간 데이터 전송
이에 사람인은 아래 [Figure 1] 과 같은 아키텍처를 구성했습니다. 사람인 VDI에서 us-east-1 리전 (버지니아)의 VPC로 곧바로 네트워크를 연결하면 해외 망 통신에 지연시간이 발생할 것이 우려되었으므로, ap-northeast-2 리전 (서울)에 트래픽 라우팅을 위한 중간 경유지 용도의 VPC와 Transit Gateway (TGW)를 구성하여, On-premise와 서울 리전 TGW 간 Site-to-Site VPN 터널 연결을 구성했습니다. 그리고 서울 리전과 버지니아 리전 간 통신은 TGW peering 을 통해 AWS 글로벌 네트워크 전용망 기반에서 안정적으로 통신하도록 했습니다.
Figure 1. 솔루션 아키텍처
정리하면, 위 아키텍처에서 VDI에서 요청한 유저의 프롬프트는 다음과 같은 플로우로 안전하게 전달됩니다. (구간 1, 2, 3은 위 이미지의 (1) – (2) – (3)번 과정과 매핑 됩니다)
- On-premise VDI에서의 요청이 서울 리전의 VPC로 Site-to-Site VPN을 통해 암호화되어 전달되면 (=구간 1),
- Transit Gateway를 통한 VPC 간 peering 연결로 ap-northeast-2 (서울) 리전에서 us-east-1 (버지니아) 리전으로 AWS 내부 백본 네트워크를 통해 전달됩니다 (=구간 2).
- 이렇게 us-east-1 (버지니아) 리전에 구성해 둔 VPC로 요청이 전달되면 AWS PrivateLink (즉 Q Developer 서비스와 VPC를 연결하는 Endpoint)를 통해 Q Developer 서비스로 AWS 백본 네트워크를 통해 전달됩니다 (=구간 3).
이후 Q Developer가 사용자의 요청을 AI Agent 기반으로 처리한 뒤 응답을 위와 반대 순서를 거쳐 안전하게 유저에게 제공합니다.
On-premise VDI환경의 DNS 서버 측에서는 엔드포인트 통신이 필요한 도메인에 대해 Private IP 주소를 각각 매핑하였습니다. IDE 테스트 과정에서 q.eu-central-1.amazonaws.com 과의 통신을 하는 상황도 있어 eu-central-1 리전에도 동일하게 VPC, Transit Gateway, Q Developer endpoint, DNS 작업을 진행했습니다. DNS 작업까지 완료한 후부터는 Site-to-Site VPN 터널을 통해 안전하게 통신할 수 있게 되었습니다.
마지막으로, Q Developer 사용자 인증을 위해서는 AWS IAM Identity Center를 통한 AWS 자격증명 기반의 인증이 필요합니다. IAM Identity Center의 경우 현재로서는 퍼블릭 인터넷 연결만 지원하고 있기 때문에, 사람인의 경우 유저들이 90일에 한 번 인증 과정을 거칠 때에만 퍼블릭 인터넷 연결을 허용하도록 했습니다. 위 아키텍처에서 0번 점선으로 표시한 것처럼, IAM Identity Center로의 통신을 VDI 내부 DNS 서버에서 허용하기 위해 망 연계 솔루션을 이용했습니다. 수시로 IP가 변경되는 퍼블릭 클라우드 서비스의 특성 상 하나의 정책으로 유지관리를 하기 어려운 상황이었으므로 이를 해결하기 위해 먼저 프록시 역할을 하는 Zscaler와의 통신을 통해 망 연계 스트리밍을 통해 통신하도록 설정하고 Zscaler에서는 IAM 인증만 제한적으로 허용하도록 구성함으로써, Q Developer 사용자 인증이 필요할 경우 VDI 내에서 퍼블릭 인터넷에 일시적으로 접근할 수 있도록 구성했습니다. 또한 Identity Center 설정에서 Amazon Q Developer 세션을 90일 간 유지하도록 직접 설정함으로써 잦은 인증으로 인한 불편함을 없애고 퍼블릭 인터넷 연결을 최소화하고자 했습니다.
위와 같은 과정을 통해 On-premise VDI와 AWS 환경 간 전 구간 private 통신을 구현할 수 있었습니다.
2. IAM Identity Center를 통한 Pro 티어 구독 진행
아키텍처를 설계한 후에는, 개발팀을 대상으로 환경 세팅 및 Q Developer Pro 티어 구독을 진행했습니다.
Q Developer는 여러 방식의 사용자 구독 방식을 제공하고 있고 이 중 어떤 옵션을 선택하느냐가 AWS 조직 계정 관리의 복잡성과 연결되므로, 공식 문서에 제시되어 있는 배포 옵션 중 사람인의 상황에 맞는 적절한 옵션을 선택해야 했습니다. 예를 들어 단순히 사용자 편의성만을 우선시하는 옵션을 선택할 경우, 관리 포인트가 과도하게 분산되어 운영 효율성이 떨어질 수 있습니다. 사람인의 경우 Q Developer 사용을 중앙에서 편리하게 관리하는 것을 우선순위로 삼았기 때문에, 운영 관점에서 모범 사례를 따를 수 있도록 문서 내 배포 옵션 2 (관리 및 멤버 계정에 배포)를 선택했습니다. 이 방식은 IAM Identity Center를 관리 계정에서 통합적으로 관리할 수 있으면서도 각 멤버 계정에서 개별적으로 Amazon Q Developer 프로파일을 설치하고 사용자 구독을 관리할 수 있어, 관리 효율성과 사용자 경험을 모두 확보할 수 있었습니다. 해당 배포 구조 및 절차는 아래 [Figure 2]에 순서대로 나와있습니다.
Figure 2. IAM Identity Center를 통한 Q Developer Pro 구독 과정
구독 과정을 좀 더 자세히 살펴볼까요? 위 이미지에 표시된 순서와 같이, Amazon Q Developer Pro 구독은 다음 과정을 따릅니다.
- 먼저 관리 계정에서 IAM Identity Center를 활성화하고, Q Developer를 사용할 멤버들을 IAM Identity Center 사용자 그룹에 추가합니다. (이 과정을 통해 멤버 계정의 AWS 자격증명을 인증에 활용할 수 있도록 사전 연동이 완료됩니다)
- 이어서 Amazon Q Developer Pro 구독을 관리할 멤버 계정을 지정합니다.
- 해당 계정으로 구독을 진행합니다.
- 만약 프로필을 생성하라는 창이 표시되면, 멤버 계정에서 Q Developer 프로필을 새롭게 생성합니다. 이때 IAM Identity Center에 등록된 사용자로 가입하게 되면, 추후 구독을 위해 사용자를 추가할 때도 Management account (관리 계정)의 목록을 그대로 불러와 사용할 수 있도록 되어 있어, 관리 계정과 멤버 계정 간 연계가 자연스럽게 이어집니다. 해당 프로필은 IAM Identity Center의 Workforce 사용자와 Q Developer Pro 구독을 연결하는 역할을 하며, 생성된 프로필은 이후 해당 계정 내 모든 구독 사용자에 대해 공통으로 사용됩니다.
- 프로필 생성까지 완료되면, 앞서 관리 계정의 IAM Identity Center에 등록한 사용자를 선택하여 Q Developer Pro 구독을 할당합니다. 이 과정을 통해 구성원 각자는 구독 절차 후에, 본인의 IDE 환경에서 Amazon Q Developer 기능을 사용할 수 있습니다.
이렇게 IAM Identity Center 기반의 사용자 구독 모델을 검토하고 적절한 옵션을 선택함으로써, 기존 사람인 사용자 조직 체계를 유지하면서도 멤버 계정으로 구독 관리를 위임하는 Best Practice 기반의 구조를 구현할 수 있었습니다.
3. 사용량 모니터링을 위한 시각화 대시보드 개발
전반적인 구독 과정이 완료되고 어느 정도 운영이 안정화된 후에는, 내부 보안 감사 및 운영 점검을 위해 사용자 활동 로그를 수집하고, 중앙 모니터링용 시각화 대시보드를 개발했습니다.
Figure 3. Q Developer 사용량 모니터링 대시보드
Amazon Q Developer 는 사용량 대시보드 활성화를 통해 개발자가 서비스를 어떻게 사용하는지 지표를 제공하며, 사용자당 세분화된 지표가 필요한 경우 S3 버킷에 csv파일에 저장하도록 제공합니다. 아래와 같이 설정하면 Amazon Q는 매일 자정(00:00 UTC+0)에 보고서를 생성하여, `s3://bucketName/prefix/AWSLogs/accountId/QDeveloperLogs/by_user_analytic/region/year/month/day/00/accountId_by_user_analytic_timestamp.csv`
경로에 CSV 파일을 저장합니다.
Figure 4. Q Developer의 사용량 대시보드 활성화 화면
이후 아래와 같은 흐름을 통해 csv로 저장된 지표를 ElasticSearch 에 인덱싱하고, Kibana를 통한 시각화를 진행하여, 매월 이용현황을 모니터링하고 있습니다.
- IAM Identity Center 내 사용자 목록을 조회 (csv파일 내의
UserId
와 JOIN 하기 위한 용도) - Amazon Q 가 생성한 csv 파일들 중 수행일 하루 전 기준 경로 하위로 전체 목록조회 및 다운로드
- IAM Identity Center 의 `UserId` 값과 csv 파일내용을 JOIN하여 ElasticSearch에 인덱싱
Figure 5. 사용량 모니터링 대시보드 구현 과정
주로 보는 지표 중 하나는 Amazon Q Developer 가 제안해주는 내용을 개발자분이 얼마나 수락했는지를 나타내는 수락률입니다. 물론 각 개인이 프롬프트를 어떻게 작성하였는지가 수락률에 가장 큰 영향을 미치겠지만, 수집된 지표만을 기준으로 본다면 사람인에서는 7월 한 달동안 가장 큰 평균 수락률을 보인 Q Developer Agent는 InlineChat 으로 약 70%였습니다. 해당 지표를 통해 각각의 개발자 분들이 Q Developer를 적절하게 잘 활용하고 있는지 확인하고, Q Developer가 개발팀의 업무효율을 얼마나 높여주고 있는지를 판단하는 기준으로도 활용할 수 있게 되었으며, 시간이 지날수록 수락률 수치가 점점 높아지는 것을 기대하고 있습니다. (그 외 수집할 수 있는 사용자 활동 지표들은 다음 문서에서 확인하실 수 있습니다)
이러한 과정을 통해 보안성과 투명성을 동시에 확보할 수 있었으며, 사람인 내부 감사 기준에도 부합하여 추후 타 조직으로의 확장이나 고도화된 모니터링을 위한 기반을 마련할 수 있었습니다.
4. 도입 과정에서의 기술 지원
이렇게 도입 과정 전반에서 여러 기술적 고민사항들이 있었지만 성공적인 도입이 가능했던 이유는 AWS 및 파트너사 GS Neotek과의 유기적인 협업과 적극적인 서포트가 있었기 때문이었습니다.
보안 연결을 위한 네트워크 아키텍처 구성에 있어 AWS의 적극적 안내가 큰 역할을 했으며, GS Neotek에서 IAM Identity Center 기반의 사용자 구독 모델 설계와 Amazon Q Developer 프로파일 연동 구조를 자세히 설계해주신 덕에 기존 사람인 사용자 조직 체계를 유지하며 멤버 계정으로 구독 관리를 위임하는 Best Practice 기반 배포 방식을 함께 검토하고 구체화할 수 있었습니다. 40명 이상의 개발자가 Q Developer를 도입을 결정한 후에는 AWS에서 Q Developer 및 Q Developer CLI를 잘 사용하는 방법에 대해 세션을 진행해주셨는데, 이는 내부 개발팀이 툴을 적절히 활용하도록 돕는 데에 많은 도움이 되었습니다. (해당 내용은 아래 사람인 개발팀이 공유하는 Amazon Q Developer 사용 팁 섹션에서 이어집니다)
사람인 개발팀이 공유하는 Amazon Q Developer 사용 팁
1. Q Developer의 에이전트 기능을 활용
사람인 개발팀에서는 Amazon Q Developer를 활용하는 방식을 조금씩 발전시켜가며 업무 효율성을 높이고 있습니다. 가장 주목할 만한 변화는 간단한 코드 수정 중심에서 요구사항 전달 중심으로 접근 방식을 바꾼 것입니다.
기존에는 개발자가 먼저 코드를 작성한 후 Q Developer에게 “이 부분을 개선해줘”, “버그를 찾아서 수정해줘”와 같이 이미 작성된 코드를 기준으로 수정 작업을 요청하는 패턴이 일반적이었습니다. 이런 방식에서는 Q Developer가 보조적인 역할에 머물게 되고, 개발자가 이미 설계한 구조와 방향 안에서만 개선점을 찾을 수 있었습니다. 하지만 최근 팀에서 실험해본 새로운 접근 방식은 처음부터 업무 요건과 상세한 스펙을 Q Developer에게 전달하는 것입니다. 단순히 “로그인 기능을 만들어줘”가 아니라, “JWT 기반 인증을 사용하며, 실패 시 계정 잠금 정책을 적용하고, 소셜 로그인도 지원하는 통합 인증 시스템을 구축해주세요. 보안 요구사항과 성능 고려사항도 포함해서 설계해주세요”와 같이 구체적인 요구사항을 명시합니다.
이렇게 하면 Q Developer가 단순한 코드 수정 도구가 아니라 개발 파트너로서 역할하게 됩니다. Q Developer의 ‘dev 에이전트’가 전체적인 아키텍처를 고려해 코드를 작성하고, ‘review 에이전트’가 품질을 검토하며, ‘doc 에이전트’가 문서까지 생성하는 Agentic한 특성을 최대한 활용할 수 있습니다. 개발자는 생성된 결과물을 검토하고 비즈니스 로직이나 도메인 특화 부분에 더 많은 시간을 할애할 수 있게 되었습니다.
2. 인프라 모니터링에 Q Developer CLI 활용
인프라 팀에서는 Q Developer CLI를 통해 AWS 인프라 모니터링 업무에도 도움을 얻어가고 있습니다. 복잡한 AWS 명령어들을 매번 찾아보거나 모니터링 스크립트를 직접 작성할 필요 없이, 자연어로 질의하면 적절한 분석 결과를 제공받을 수 있습니다.
실제로 “주말에 EC2 서버 접속한 기록 분석해줘”라고 요청했을 때, Q Developer가 AWS 계정의 CloudTrail 로그를 자동으로 확인하여 해당 기간 동안의 접속 기록을 시간대별로 정리하고, 각 접속의 지속시간과 접속 목적까지 추정해서 제공한 사례가 있었습니다. 이런 방식으로 인프라 보안 관리나 장애 대응 시 필요한 정보들을 빠르게 파악할 수 있어 업무 효율성이 크게 향상되었습니다.
3. Kiro IDE와 함께하는 스펙 기반 개발
초기 개발 단계에서는 IDE인 Kiro와 함께 사용하여 스펙 기반 개발을 진행하는 것도 효과적이었습니다. 실제로 앞 섹션에서 소개했던 Q Developer 사용량 모니터링 대시보드도 Kiro를 활용해 요구사항을 정리하고 실제 인프라 구축까지 진행한 것으로, 개발의 전 과정을 AI를 통해 자동화한 사례 중 하나입니다. 아래 [Figure 6, 7, 8]은 실제로 사람인 개발팀이 Kiro를 활용해 사용량 모니터링 대시보드를 구축한 과정의 일부입니다. S3에 저장된 로그 데이터를 Elasticsearch로 인덱싱하는 파이프라인을 구축해달라고 Kiro에 자세히 요청사항을 작성하니, 여러 과정을 거쳐 각 단계별 데이터 변환 로직, 에러 핸들링을 담은 코드부터, 구현 내용을 쉽게 이해할 수 있는 문서와 다이어그램까지 모든 요소들을 AI를 통해 체계적으로 구현할 수 있었습니다.
Figure 6. Kiro를 이용해 사용량 모니터링 대시보드를 구현한 과정 (1)
Figure 7. Kiro를 이용해 사용량 모니터링 대시보드를 구현한 과정 (2)
Figure 8. Kiro를 이용해 사용량 모니터링 대시보드를 구현한 과정 (3)
마무리
지금까지 사람인이 Amazon Q Developer를 도입하여 보안 요구사항을 만족하면서도 생산성을 크게 향상시킨 여정을 소개해드렸습니다.
해당 솔루션 구축에 사용된 AWS 서비스들의 더 자세한 사용법 및 사용 사례가 궁금하신 분들은 아래의 자료를 참고해보세요.
- Amazon Q Developer 를 프라이빗 네트워크를 통해 안전하게 이용하는 방법을 직접 실습해보고 싶으시다면, Building Secure Amazon Q Developer Environments: A Hands-on Workshop 워크샵을 참고하세요. 단계 별 Hands-on 가이드가 준비되어 있습니다.
- Amazon Q Developer가 어떻게 동작하는지, 개발 과정에서 어떻게 잘 사용할 수 있을지에 대해 알아가고 싶으시다면 다음 영상을 참고해보세요: Amazon Q Developer로 AI Agent 기반 개발하기 (Youtube 영상)
- Amazon Q Developer CLI에 MCP를 연동하여 사용하는 방법에 대해 알아가고 싶으시다면, 다음 영상을 통해 사용법을 따라가보세요: Amazon Q Developer CLI에서 MCP 활용하기 (Youtube 영상)
앞으로도 사람인은 Amazon Q Developer의 기능과 보안 정책을 정기적으로 검토하고, AWS 및 GSN과의 긴밀한 협업을 통해 보다 안전하고 효율적인 개발 환경 제공을 위해 지속적으로 노력해 나갈 계획입니다.