아마존 Kiro IDE vs Cursor ai비교 : 갈아 탈만 한가?

Kiro IDE는 아마존 (AWS)가 출시한 인공지능 기반 통합 개발환경 입니다. 이것도 VS Code 를 기반으로 되어 있구요. AI에이전트와 스펙 기반 개발, 자동화 코드 품질 관리, 실시간 문서화 등의 기능이 내장되어 있습니다. 

 

Claude Code 설치하는 방법 (Cursor AI에서 사용하는 방법)

 

실제로 제가 커서와 클로드 코드로 개발을 할 때 AI는 코딩을 정말 생산성 있게 해주는 도구지만 중간중간 문서화를 하지 않으면 AI의 한계로 인해 작업기억을 잃어버리는 일이 허다해서 반드시 문서화를 통해 리마인드를 시켜줘야하는데, 이것을 키로는 실시간, 자동화되어 있다는 것입니다. 

 

반응형

 

현재 Kiro는 무료 프리뷰 버전이 공개되어 있어서 누구나 사용할 수 있습니다. 꼭 지금 써봐야하는 이유이기도 합니다.

 

아마존 키로(KIRO) 다운로드 바로가기

 

Kiro

The AI IDE for prototype to production

kiro.dev

 

아마존 키로 데모영상

 

https://youtu.be/JOqLp1adGO4

 

키로 다운로드 및 설치

공식 사이트에 들어가면 바로 눈에 띄는 곳에 OS에 맞는 다운로드 버튼이 나타납니다. 저는 Mac을 사용하고 있기 때문에 아래와 같이 MacOS용 다운로드가 나타납니다. 


Mac의 경우는 다운로드 버튼을 누르면 애플실리콘인지 인텔인지 선택을 하게 되고 본인의 환경에 맞는 버전으로 선택하면 다운로드가 진행됩니다. 다운로드한 설치 파일을 실행시키면 간단히 설치할 수 있습니다.

 

 

 

KIRO VS Cursor IDE 비교

항목 Kiro IDE (아마존) Cursor IDE
기반 VS Code 기반, AWS 직접 개발 커스텀 VS Code 포크
사용자 대상 기업/팀, DevOps, 대규모 협업에 적합
* 개인 개발자, 스타트업, 빠른 프로토타이핑 가능
개인개발자, 스타트업, 소규모 팀에 더 적합
* Kiro IDE 대상과 다르지 않음.
AI 기능 스펙 자동 생성, 요구사항 > 설계>태스크 자동화, Hooks, 조직 지식
커서의 대화형 AI코딩도 가능
대화형 AI코딩, 빠른 코드 제안, 오류 디버깅, 리펙터링
내부 시스템 /정책 통합 강력(내부 API, 보안정책, 문서, CI/CD) 거의 없음(로컬 컨텍스트에 집중)
입문자 친화성 자동화, 대규모 프로젝트 팀관리 > 관련 설정 많음 가볍고 빠름, 개인/소규모 프로젝트에 최적
무료 플랜 현재 프리뷰 전체 무료, 이후 월 50회 무료, 유료 플랜 예정 기본 유료(구독 기반)
VS Code 확장 지원 가능, 기존 설정도 이식 가능 가능

 

위에 표를 보면 사용자 대상이 좀 다른 것 같지만 사실상은 Vs Code기반이라서 개인 개발자 등 모두 다 키로를 사용할 수 있고 Cursor 역시 반대로 기업, 팀, 협업에도 문제가 없습니다. 다만 키로가 아마존에서 내부적으로 사용하던 도구를 공개한 것이라서 기업, 팀 사용에 좀 더 특화되어 있다고 아마존이 밝힌 바 있습니다.

 

 

KIRO 사용해보기

저는 구글로 로그인을 했고, 초기 설정을 VS CODE 에서 가져올 수 있습니다. 

 

간단히 설정을 마치고 나면 초기화면이 나타납니다. VS 코드나 커서와 크게 다를 바 없죠.

 

 

프로젝트를 하나 불러오거나 생성하면 다음 화면은 조금 차이가 있습니다.

 

바이브 코딩으로 작업할 것인지, 스펙 작업을 할 것인지 선택이 가능하고, 왼쪽 메뉴에는 Hook라는 것도 있습니다.

 

 

키로 특징

모델 기반은 클로드 4 소넷입니다. 3.7과 4.0 중에서 선택할 수 있습니다. 

바이브코딩

바이브 코딩은 이미 커서에서 사용하는 것과 같은 방법으로 코딩하는 방법입니다. 위 화면에선 키로 아이콘이 선택되어 있어서 프로젝트 파일 목록이 안보이지만 커서나 VS CODE를 사용하는 것처럼 왼쪽 메뉴에서 파일을 선택하고 코딩을 하면 되는 것은 동일합니다.

 

 

 

스펙 기반 개발

커서와 큰 차이점 중 하나가 바로 스펙 기반 개발입니다.

예를 들어 "사이트에 챗봇 시스템 구현"이 라고 프롬프트를 입력하게 되면 아래와 같이 가장 먼저 requirements.md 문서를 만듭니다.

 

 

한글로 해달라고 하면 한글로 해주고, 사용자 스토리, 요구사항 자동 문서화 설계 문서(데이터 흐름도, DB설계, API 등), 작업(태스크) 리스트, 각각의 코딩, 테스트, 문서화 등 자동 분리합니다.

각 작업을 단계 별로 체크하면서 진행 가능합니다. 시간이 좀 더 걸리고 손이 많이 가는 것이긴 하지만 복잡한 작업일 수록 이 작업이 굉장히 중요합니다.

 

참고로 저는 개인적으로 커서+클로드를 조합으로 퀀트투자 시스템을 개발 중인데 이 작업을 아무리 체계화하려고 해도 커서나 클로드코드가 멋대로 처리하는 경우가 많고 정규화하지 않아서 중간중간 이에 대한 지적을 해야만 처리하는 경우가 너무 많습니다. 반드시 숙지해야하는 문서로 남겨도 제대로 확인하지 않는 경우가 많은데, 키로는 이것을 정규화했다고 하니 기대되는 부분입니다.

 

키로가 작성한 Requirment 문서가 괜찮으면 다음 단계로 설계를 진행하도록 승인해주면 됩니다.

요구사항 내용을 일부 살펴보면 마치 ai 시스템 프롬프트 처럼 역할 부여하듯 작업되어 있는 것을 볼 수 있습니다.

 

# 요구사항 문서

## 개요

이 문서는 웹사이트에 챗봇 시스템을 구현하기 위한 요구사항을 정의합니다. 챗봇은 자동화된 고객 지원을 제공하고, 자주 묻는 질문에 답변하며, 사용자가 다양한 웹사이트 기능과 서비스를 이용할 수 있도록 안내합니다. 시스템은 사용자 친화적이고 반응형이며, 기존 웹사이트 인프라와 원활하게 통합되어야 합니다.

## 요구사항

### 요구사항 1

**사용자 스토리:** 웹사이트 방문자로서, 챗봇과 상호작용하여 질문에 대한 빠른 답변을 얻고 싶습니다. 전체 웹사이트를 검색하거나 사람의 지원을 기다리지 않고도 정보를 찾을 수 있도록 하기 위해서입니다.

#### 승인 기준

1. WHEN 사용자가 웹사이트의 어떤 페이지를 방문할 때 THEN 챗봇 인터페이스가 보이고 접근 가능해야 한다
2. WHEN 사용자가 챗봇 인터페이스를 클릭할 때 THEN 채팅 창이 열리고 환영 메시지가 표시되어야 한다
3. WHEN 사용자가 메시지를 입력하고 전송할 때 THEN 챗봇이 3초 이내에 응답해야 한다
4. WHEN 사용자가 질문을 할 때 THEN 챗봇이 미리 정의된 응답이나 AI 처리를 기반으로 관련 답변을 제공해야 한다

 

설계 문서(Design.md)

# 설계 문서

## 개요

이 문서는 웹사이트 챗봇 시스템의 기술적 설계를 정의합니다. 시스템은 프론트엔드 채팅 인터페이스, 백엔드 API 서버, 데이터베이스, 그리고 관리자 패널로 구성됩니다. 모든 컴포넌트는 확장 가능하고 유지보수가 용이하도록 설계되었습니다.

## 아키텍처

### 전체 시스템 아키텍처

```mermaid
graph TB
    A[사용자 브라우저] --> B[챗봇 프론트엔드]
    B --> C[API 게이트웨이]
    C --> D[챗봇 서비스]
    D --> E[응답 엔진]
    D --> F[언어 감지 서비스]
    D --> G[데이터베이스]
    H[관리자 패널] --> C
    I[분석 서비스] --> G
    J[로깅 서비스] --> G
```

### 기술 스택

- **프론트엔드**: HTML5, CSS3, JavaScript (ES6+)
- **백엔드**: PHP 8.0+ 또는 Node.js
- **데이터베이스**: MySQL 8.0+
- **웹서버**: Apache/Nginx
- **보안**: HTTPS, 데이터 암호화
- **분석**: Google Analytics 통합

## 컴포넌트 및 인터페이스

### 1. 챗봇 프론트엔드 컴포넌트

#### ChatWidget 클래스
```javascript
class ChatWidget {
    constructor(options) {
        this.container = options.container;
        this.apiEndpoint = options.apiEndpoint;
        this.language = options.language || 'auto';
        this.isOpen = false;
        this.messages = [];
    }
    
    init() {
        this.createWidget();
        this.bindEvents();
        this.loadWelcomeMessage();
    }
    
    createWidget() {
        // 위젯 HTML 구조 생성
    }
    
    sendMessage(message) {
        // API로 메시지 전송
    }
    
    receiveMessage(response) {
        // 응답 메시지 표시
    }
}
```

#### 주요 기능
- 반응형 채팅 인터페이스
- 실시간 메시지 교환
- 언어 감지 및 전환
- 접근성 지원 (ARIA 레이블, 키보드 탐색)
- 모바일 최적화

### 2. 백엔드 API 서비스

#### API 엔드포인트 구조
```
POST /api/chat/message
GET /api/chat/history/{sessionId}
POST /api/chat/feedback
GET /api/admin/conversations
POST /api/admin/responses
PUT /api/admin/responses/{id}
DELETE /api/admin/responses/{id}
```

#### ChatController 클래스 (PHP 예시)
```php
class ChatController {
    private $responseEngine;
    private $languageDetector;
    private $conversationLogger;
    
    public function sendMessage(Request $request) {
        $message = $request->input('message');
        $sessionId = $request->input('session_id');
        $language = $this->languageDetector->detect($message);
        
        $response = $this->responseEngine->generateResponse($message, $language);
        $this->conversationLogger->log($sessionId, $message, $response);
        
        return response()->json([
            'response' => $response,
            'language' => $language,
            'timestamp' => now()
        ]);
    }
}
```

### 3. 응답 엔진

#### ResponseEngine 클래스
```php
class ResponseEngine {
    private $predefinedResponses;
    private $aiService;
    
    public function generateResponse($message, $language) {
        // 1. 키워드 매칭으로 미리 정의된 응답 검색
        $predefinedResponse = $this->findPredefinedResponse($message, $language);
        
        if ($predefinedResponse) {
            return $predefinedResponse;
        }
        
        // 2. AI 서비스 호출 (선택사항)
        if ($this->aiService) {
            return $this->aiService->generateResponse($message, $language);
        }
        
        // 3. 기본 응답
        return $this->getDefaultResponse($language);
    }
}
```

### 4. 관리자 패널

#### 기능
- 대화 로그 조회 및 검색
- 미리 정의된 응답 관리 (CRUD)
- 사용 통계 및 보고서
- 사용자 피드백 관리
- 시스템 설정

## 데이터 모델

### 데이터베이스 스키마

#### conversations 테이블
```sql
CREATE TABLE conversations (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    session_id VARCHAR(255) NOT NULL,
    user_message TEXT NOT NULL,
    bot_response TEXT NOT NULL,
    language VARCHAR(10) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    user_ip VARCHAR(45),
    user_agent TEXT,
    INDEX idx_session_id (session_id),
    INDEX idx_created_at (created_at)
);
```

#### predefined_responses 테이블
```sql
CREATE TABLE predefined_responses (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    keywords TEXT NOT NULL,
    response_ko TEXT NOT NULL,
    response_en TEXT NOT NULL,
    category VARCHAR(100),
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
```

#### chat_analytics 테이블
```sql
CREATE TABLE chat_analytics (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    session_id VARCHAR(255) NOT NULL,
    event_type VARCHAR(50) NOT NULL,
    event_data JSON,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    INDEX idx_session_id (session_id),
    INDEX idx_event_type (event_type)
);
```

#### unanswered_questions 테이블
```sql
CREATE TABLE unanswered_questions (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    question TEXT NOT NULL,
    language VARCHAR(10) NOT NULL,
    frequency INT DEFAULT 1,
    first_asked TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    last_asked TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    is_resolved BOOLEAN DEFAULT FALSE
);
```

## 에러 처리

### 에러 유형 및 처리 방법

1. **네트워크 에러**
   - 자동 재시도 메커니즘 (최대 3회)
   - 사용자에게 연결 문제 알림
   - 오프라인 모드 지원

2. **서버 에러**
   - 로그 기록 및 관리자 알림
   - 사용자에게 일반적인 에러 메시지 표시
   - 대체 응답 제공

3. **입력 검증 에러**
   - 클라이언트 사이드 검증
   - 서버 사이드 재검증
   - 명확한 에러 메시지 제공

### 에러 응답 형식
```json
{
    "success": false,
    "error": {
        "code": "VALIDATION_ERROR",
        "message": "메시지가 너무 깁니다.",
        "details": {
            "field": "message",
            "max_length": 1000
        }
    }
}
```

## 테스트 전략

### 단위 테스트
- 각 클래스와 메서드의 개별 기능 테스트
- 응답 엔진의 키워드 매칭 테스트
- 언어 감지 정확도 테스트

### 통합 테스트
- API 엔드포인트 테스트
- 데이터베이스 연동 테스트
- 프론트엔드-백엔드 통신 테스트

### 사용자 인터페이스 테스트
- 크로스 브라우저 호환성 테스트
- 모바일 반응형 테스트
- 접근성 테스트 (WCAG 2.1 AA 준수)

### 성능 테스트
- 동시 사용자 부하 테스트
- 응답 시간 측정 (3초 이내 목표)
- 메모리 사용량 모니터링

### 보안 테스트
- SQL 인젝션 방지 테스트
- XSS 공격 방지 테스트
- CSRF 토큰 검증 테스트
- 데이터 암호화 검증

## 보안 고려사항

### 데이터 보호
- 모든 통신은 HTTPS로 암호화
- 데이터베이스 저장 시 민감 정보 암호화
- 세션 관리 및 토큰 기반 인증

### 입력 검증
- 모든 사용자 입력에 대한 서버 사이드 검증
- SQL 인젝션 방지를 위한 준비된 문장 사용
- XSS 방지를 위한 출력 이스케이핑

### 접근 제어
- 관리자 패널 접근 권한 관리
- API 엔드포인트 인증 및 권한 부여
- 비율 제한 (Rate Limiting) 구현

## 성능 최적화

### 프론트엔드 최적화
- JavaScript 및 CSS 파일 압축
- 이미지 최적화 및 지연 로딩
- 브라우저 캐싱 활용

### 백엔드 최적화
- 데이터베이스 쿼리 최적화 및 인덱싱
- 응답 캐싱 (Redis 활용)
- 연결 풀링 구현

### 확장성 고려사항
- 수평적 확장을 위한 무상태 설계
- 로드 밸런싱 지원
- 마이크로서비스 아키텍처 준비

## 모니터링 및 로깅

### 로깅 전략
- 모든 대화 기록 저장
- 에러 로그 및 성능 메트릭 수집
- 사용자 행동 분석을 위한 이벤트 로깅

### 모니터링 지표
- 응답 시간 및 가용성
- 사용자 만족도 및 해결률
- 시스템 리소스 사용량
- 에러 발생률 및 패턴

이 설계는 요구사항을 모두 충족하면서도 확장 가능하고 유지보수가 용이한 챗봇 시스템을 구축할 수 있도록 합니다.

 

 

키로가 챗봇을 설계한 문서입니다.

프론트, 백엔드, api, 개발 및 성능 최적화, 확장성 고려사항, 모니터링등 구체적인 실행계획이 담겨 있습니다.

 

TASK.md

# 구현 계획

- [ ] 1. 데이터베이스 스키마 및 기본 구조 설정
  - MySQL 데이터베이스에 conversations, predefined_responses, chat_analytics, unanswered_questions 테이블 생성
  - 데이터베이스 연결 설정 및 기본 구성 파일 작성
  - _요구사항: 2.1, 2.2, 6.1, 6.2, 7.2_

- [ ] 2. 백엔드 API 기본 구조 구현
- [ ] 2.1 기본 API 엔드포인트 및 라우팅 설정
  - POST /api/chat/message, GET /api/chat/history, POST /api/chat/feedback 엔드포인트 생성
  - 기본 요청/응답 구조 및 에러 처리 미들웨어 구현
  - _요구사항: 1.3, 1.4, 7.1_

- [ ] 2.2 ChatController 클래스 구현
  - 메시지 수신 및 응답 처리 로직 작성
  - 세션 관리 및 대화 로깅 기능 구현
  - _요구사항: 1.3, 1.4, 2.1, 6.1_
...

 

태스크 작성은 다른 부분보다 시간이 걸리는 것 같습니다 . 처음엔 잘 몰라서 태스크 작성은 왜 떠 있기만 하고 안하나 했더니 천천히 채워지더라구요. 작성이 완료되고 나면 어느정도 시간이 지난 다음에 아래와 같이 어떤 태스크 작업에 대해 작성을 완료했는지 서머리해서 보여줍니다.

 

구현 계획을 작성했습니다. 총 13개의 주요 작업으로 구성되어 있으며, 각 작업은 다음과 같은 순서로 진행됩니다: 데이터베이스 설정 - 기본 스키마 및 구조 백엔드 API - 핵심 서버 로직 구현 응답 엔진 - 메시지 처리 및 언어 지원 프론트엔드 위젯 - 사용자 인터페이스 모바일 최적화 - 반응형 디자인 접근성 - 키보드 및 스크린 리더 지원 관리자 패널 - 관리 기능 분석 시스템 - 통계 및 모니터링 에러 처리 - 안정성 개선 보안 강화 - 데이터 보호 성능 최적화 - 속도 개선 테스트 - 품질 보증 배포 및 통합 - 실제 웹사이트 적용 각 작업은 관련 요구사항을 참조하여 구체적인 구현 목표를 제시합니다.

 

Agentic Hooks

키로의 이 기능은 파일 저장, 코드 커밋, 태스크 등 이벤트에 따라 자동화 규칙(태스크 자동 실행, 문서 자동 업데이트 등) 설정이 가능합니다. 초보자는 기본값으로 쓰면 된다고 하네요.

 

 

나머지 부분은 커서와 크게 다른 부분은 없는 것 같습니다.

커서에 익숙하신 분들은 그냥 커서 처럼 사용해도 문제가 없을 것 같구요.

 

조금 복잡하고 팀, 설계, 보안, 문서화까지 포함해서 체계적으로 개발하고 싶으시다면 키로가 좀 더 관리에 용이한 것으로 보입니다.

 

 

키로 사용 요금

키로의 요금 - 가격 플랜은 아래와 같습니다.

현재는 프리뷰 무료 사용 기간으로 제한 없이 사용 가능하구요. 정식 출시 이후에는 요금제에 따라 월 사용 한도가 달라집니다.

 

무료 플랜은 말 그대로 0 달러로 월 50회 에이전트 사용이 가능합니다. 프로 요금제는 커서의 기본 요금제와 같은데 커서의 경우는 월 19달러로 500회 빠른 사용이 가능한 반면 키로는 월 1000회 사용 가능합니다.

프로 플러스(Pro +) 라는 중간 요금제가 있는데 39달러에 월 3000회 사용이 가능합니다. 추가 사용은 별도 결제로 1회 초과 사용당 0.04 달러가 적용된다고 합니다.(사전 설정 시)

 

 

 

마치며 : 커서 대신 쓸만 할까?

이부분이 가장 중요한데요. 개인적으로는 아직 더 써봐야하겠지만 익숙해진다면 갈아 탈 의향이 있습니다. 같은 요금으로 더 많이 사용할 수 있는 것도 좋고 설계를 잘 관리하면서 진행할 수 있다면 같은 작업에서 오류가 적어지는 만큼 시간도 세이브될 것으로 기대하고 있습니다.

 

하지만 현재로서는 아직은 프리뷰 상태여서인지, 사용자가 몰려서인지 모르겠지만 속도를 보장해주지 않는 것 같습니다. 저만 그런 것일 수도 있으나 물어보면 답변이 한참 걸리거나 현재 작업이 진행중인지 정확히 알 수 있는 인디케이터 같은 게 없는 것 같습니다. 태스크 문서를 작성할 때 되고 있는 것인지 아닌지 확인이 안돼서 프롬프트를 입력해봐도 답이 없다가 갑자기 작업이 되어 있고 또 좀 있다가 작업이 완료되었다는 답변이 떠 있곤 했습니다.

 

앞으로 사용을 더 해보고 프로젝트에 직접 사용해 보면서 실제로 어떤지 소감을 추가해 보겠습니다.

 

감사합니다.

반응형

댓글

Designed by JB FACTORY