폭포수 방법론은 이제 구식처럼 보이지만, SCRUM, Crystal, eXtreme, Kanban 등 반복적이고 빠르게 애플리케이션을 구축하는 새로운 패러다임이 일반화되었습니다. Couchbase를 사용한 NoSQL은 이러한 움직임의 다음 진화라고 생각하며, 데이터 모델을 원활하고 반복적으로 훨씬 더 빠르게 개발할 수 있게 해줍니다.
저는 애플리케이션을 만들 때 아이디어의 일부만 알고 있는 경우가 많습니다. 저는 뛰어들어서 소매를 걷어붙이고 알아내는 것을 좋아합니다. 아이디어는 있지만 막상 만들다 보면 더 많은 것을 알게 되고, 다른 사람들에게 보여줄 때 더 많은 것을 배우고 다시 변경하는 일이 잦습니다. 액티브 레코드와 루비를 사용하면 데이터 관점에서 어떻게 작동해야 할지 마음이 바뀔 때마다 마이그레이션을 만들어야 합니다. 저는 이것이 고통 그 이상이라고 생각합니다.
Couchbase로 전환하고 나니 훨씬 더 평화롭고 유기적인 세계에 들어와 있는 자신을 발견했습니다. 필드를 추가하고, 필드를 제거하고, 변경하는 것이 너무 쉬워서 마이그레이션 없이 개발하는 것이 아찔할 정도였죠. 스키마 유연성은 정말 대단합니다. 솔직히 골치 아픈 일이 많이 줄고 개발이 더 원활해졌다고 느낍니다. 또한 '레코드'마다 다를 수 있는 json 필드인 추가 '열'을 가질 수 있습니다. 물론 이것들은 열이나 행이 아닌 Couchbase의 문서이지만, 대부분의 사람들은 여전히 (현재로서는) SQL로 생각하는 것 같습니다.
그렇다면 스키마 유연성이 있다는 것은 무엇을 의미할까요? Couchbase는 데이터를 JSON 문서로 저장합니다. 즉, Ruby 객체를 검색하고 저장할 때 문서에 새 JSON 키를 추가하거나 값을 문자열에서 배열 또는 변경이 필요한 모든 것으로 쉽게 변경할 수 있습니다. 마이그레이션을 할 필요가 없습니다. 내 데이터베이스와 모델만 다를 뿐 JSON으로 API를 만들거나 사용하는 것과 거의 동일합니다.
(*주의 - 물론 특정 데이터 형식의 수백만 개의 문서가 이미 있다면 인스턴스화할 때 변경을 처리하거나 새 애플리케이션을 개발하는 것과는 다른 '데이터 마이그레이션'을 수행해야 할 수도 있습니다. 이마저도 구현하기는 간단합니다.)
Ruby는 아름다운 언어이고, Rails는 아름다운 프레임워크이며, Couchbase와 함께 사용하면 이전보다 훨씬 더 유기적으로 개발할 수 있습니다.