이번 세션에서는 Thoughtbot의 내부 Hub 애플리케이션에서 500줄이 넘는 ‘Opportunity’ 클래스를 대상으로 GitHub Copilot의 ‘ask’ 모드를 활용했습니다. Claude 3.5 Sonnet과 ChatGPT의 GPT-4o 두 가지 LLM을 비교하여 Rails AntiPatterns
서적에 대한 이해도와 원칙 적용 능력을 평가했습니다. 두 LLM 모두 서적의 내용을 인지하고 있었으며, Fat Model, Law of Demeter 위반 등 여러 안티패턴에 대한 유효한 제안을 제공했습니다. 흥미롭게도 ‘Nested Model Pattern’과 같은 일부 제안은 실제 서적에 없는 내용이었고, Enums와 같이 최신 Rails 기능에 대한 제안도 있었습니다. 이는 AI가 기존 지식 외에 새로운 관점을 제시할 수 있음을 보여줍니다.
리팩토링 과정에서 AI는 상태 관련 메서드를 모듈로 추출하는 방안을 제안했으며, 이는 Thoughtbot의 또 다른 서적인 Ruby Science
에서 다루는 모듈과 컴포지션(Composition) 사용에 대한 심도 깊은 논의로 이어졌습니다. AI는 두 가지 접근 방식에 대한 코드 예시를 제공했지만, 컴포지션이 더 나은 테스트 용이성과 명확한 의존성을 제공하며 Rails 커뮤니티에서 더 인기를 얻고 있다는 점이 주목되었습니다. 이후 Copilot의 모드를 ‘ask’에서 ‘agent’로 전환하여 LLM이 직접 리팩토링을 구현하도록 시도했습니다. 하지만 이 과정에서 성능 저하, 컨텍스트 손실, 과도한 코드 변경, 그리고 테스트 실패와 같은 여러 문제점이 발생했습니다. 이는 AI 도구가 분석 및 제안에는 강점을 보이지만, 복잡하고 실제적인 구현 단계에서는 여전히 인간의 면밀한 감독과 개입이 필요하다는 중요한 시사점을 제공합니다.
이번 실험을 통해 다음과 같은 교훈을 얻을 수 있었습니다. ‘ask’ 모드는 ‘agent’ 모드보다 현재로서는 더 신뢰할 수 있으며, 복잡한 리팩토링 작업 시 AI를 분석 및 제안 도구로 활용하는 것이 더 효과적입니다. 또한, AI 도구를 사용할 때는 작은 단위로 시작하고, 인간의 감독이 필수적이며, AI에게 명확하고 구체적인 지침을 제공해야 함을 강조합니다. AI는 문제 식별과 해결책 제안에 유용하지만, 실제 구현은 여전히 심층적인 이해를 요구합니다.