Model Context Protocol(MCP)의 이해와 실전 활용
Sammy는 최근 ThoughtBot의 투자 시간(Investment Time)을 통해 MCP를 집중적으로 탐구했습니다. MCP는 LLM과 외부 서비스 사이에서 프록시 역할을 수행하는 프로토콜로, AI가 특정 함수 호출을 통해 실시간 데이터에 접근할 수 있게 합니다. 구체적으로 Playwright MCP 서버를 사용하여 브라우저 자동화를 구현함으로써, 프로덕션 사이트의 시각적 렌더링 차이를 식별하거나 QA 작업을 수행하는 사례를 소개했습니다. 또한 Context.7 MCP 서버는 Rails나 Ruby의 최신 문서를 실시간으로 참조하여, AI가 존재하지 않는 API 메서드를 만들어내는 ‘할루시네이션’ 문제를 효과적으로 방지합니다. 이러한 도구들은 AI가 단순히 학습된 데이터에만 의존하는 것이 아니라, 현재 시점의 정확한 정보에 기반하여 개발자를 보조할 수 있도록 돕습니다.
Rails 애플리케이션과 AI의 통합
Chad는 Rails 앱의 구조를 AI 어시스턴트에게 구조화된 방식으로 노출하는 전용 Gem을 소개했습니다. 이는 개발 및 테스트 모드에서 실행되며, 모델 목록이나 메서드 이름 등 코드베이스의 메타데이터를 MCP를 통해 제공합니다. 이를 통해 AI는 단순한 코드 조각이 아닌 전체 애플리케이션의 컨텍스트를 이해하고 더 정확한 제안을 할 수 있게 됩니다. 또한, 이러한 기술은 향후 AI 에이전트가 복잡한 비즈니스 로직을 분석하고 코드를 생성하는 데 있어 핵심적인 역할을 할 것으로 보입니다.
대규모 데이터베이스 리팩토링: influencers 테이블 사례
Sammy는 서비스의 핵심인 influencers 테이블을 profile로 변경하는 대규모 리팩토링 작업을 Claude Code의 ‘Ultra Thinking’ 모드를 활용해 진행한 경험을 공유했습니다. 150개 이상의 파일을 수정하는 과정에서 발생한 토큰 소모 문제와 AI의 미세한 실수들을 언급하며, 대규모 작업 시 AI 에이전트 모드의 한계와 주의점을 설명했습니다. 이에 대해 Chad는 Postgres의 테이블 에일리어싱(Aliasing) 기능을 활용하여 기존 이름과 새 이름을 동시에 지원함으로써, 점진적이고 안전하게 코드를 수정할 수 있는 기술적 팁을 제안했습니다. 이는 데이터베이스 마이그레이션 시 발생할 수 있는 다운타임을 최소화하고 롤백을 용이하게 하는 실무적인 해결책입니다.
AI 코드 생성과 개발자의 ‘Taste’
AI가 생성한 코드의 품질이 숙련된 개발자의 기준(Taste)에 미치지 못하는 현상에 대해 심도 있는 토론이 이어졌습니다. 기능적으로는 올바르더라도 명명 규칙이나 구조적 설계가 팀의 스타일과 맞지 않는 경우가 많습니다. ThoughtBot은 이를 해결하기 위해 AI에게 팀의 스타일 가이드를 주입하는 프롬프트 엔지니어링 전략을 개발 중이며, ‘Sandy Metz처럼 행동하라’와 같은 구체적인 페르소나 설정이 유용한 기법이 될 수 있음을 시사했습니다. 결국 AI는 도구일 뿐이며, 최종적인 코드의 우아함과 유지보수성은 개발자의 역량에 달려 있습니다.
현대 웹 개발의 문제점과 대안
마지막으로 과도한 JavaScript 의존성으로 인한 사용자 경험 저하 문제를 비판했습니다. 특히 SPA 환경에서 발생하는 포커스 탈취(Focus Stealing)와 불필요한 로딩 인디케이터 남발을 지적하며, HTML과 CSS 중심의 웹 표준으로 회귀할 것을 강조했습니다. 최근 도입된 CSS Container Queries는 브라우저 크기가 아닌 컴포넌트 자체의 가용 공간에 반응하는 설계를 가능하게 하여, 더 효율적이고 표준에 가까운 레이아웃 구현을 돕는 강력한 도구로 소개되었습니다. 이는 현대 웹 개발이 복잡성보다는 본질적인 접근성에 더 집중해야 함을 상기시킵니다.