CRUD로 빈틈없고 매끈하게 인터페이스 설계하기

데이터베이스에서 배우는 사용자 인터페이스 설계 원칙

Berry van der Velden

기획자 : 이거 수정 어디서 하는건가요?
개발자 : 네? 수정 명세 안 만들어줬잖아요?
기획자 : …(기획서대로만 개발하면 어떡하냐 이 개발자야)
개발자 : 수정해서 주세요. (한번에 좀 잘 써라 이 기획자야)

중복과 누락

누구나 실수를 한다. 특히 범위가 넓고 요구사항이 많은 제품을 만들때는 열심히 확인해도 실수를 할 수 밖에 없다. 인터페이스 설계자가 사용자 인터페이스를 구성하면서 하는 실수 중 많은 부분을 차지하는 것이 서비스 플로우 상에서 중복 또는 누락이 발생하는 것이다.

예를 들어서, 가계부앱을 만든다고 하면 내가 쓴 금액을 입력하는 화면도 있고 수정할 수 있는 화면도 있지만, 삭제 버튼이 없다면 사용자는 있지도 않은 삭제 버튼을 찾기 위해 머나먼 여정을 떠나거나 슬프게도 그 가계부 앱을 떠날 것이다.

물론 사람이 만드는 이상 중복과 누락되는 플로우가 생기는 것은 필연적인 일이다. 개발자가 개발을 하면서 서비스 설계 중 생긴 누락 부분을 수정해주면 좋겠지만 현실적이지 않다. 많은 개발자들이 제품에 동기부여되지 않아 있거나 업무량이 지나치게 많아 서비스 플로우에 신경을 쓰기 어렵다. 자연스럽게 기획서대로만 개발을 진행하기 때문에 서비스 플로우를 같이 고민해주는 아름다운 광경은 일어나기 힘들다.

서비스 설계자는 개발자가 개발에만 집중할 수 있도록 도와줘야 한다. 가능한 한번에 서비스 플로우 중복과 누락없이 매끈하게 설계해 개발일정을 추가하는 등의 불필요한 낭비를 줄여야한다.

꼼꼼해질 수 있는 방법

내가 지금 겪고 있는 문제는 나뿐만 아니라 누군가 똑같이 겪었던 것이다. 그 문제들은 반복적인 시행착오 통해 대부분 해결이 됐고, 좋은 것은 나눠 쓰는 훌륭한 분들을 통해 체크리스트와 방법론 그리고 프레임워크 등으로 공유될 수 있었다.

서비스 플로우를 설계 할 때 역시 많은 사람이 나와 같은 중복과 누락 문제를 겪었고 해결방법 또한 존재한다. 그 중 데이터모델링에서 중복과 누락을 방지하기 위해 정리된 CRUD가 있다. CRUD는 인터페이스 설계를 위해 정리된 것은 아니지만 인터페이스 설계시 가볍고 빠르게 사용할 수 있다.

Create, Read, Update, Delete

대부분 CRUD가 익숙하지 않겠지만 컴퓨터공학을 전공하거나 데이터베이스 수업을 수강했다면 한번쯤은 들어봤을 용어다. Create, Read, Update, Delete의 제일 앞 문자를 하나씩 따와서 만든 줄임말로, 데이터를 처리하는 시스템이 지속성을 갖기위해 갖춰야 하는 기본적인 데이터 처리 4가지 기능이다. 즉 시스템에서 데이터를 Create, Read, Update, Delete를 할 수 없다면 정상적으로 작동하는 시스템이 아니라는 뜻이다.

데이터베이스 에서 나온 용어지만 사용자 인터페이스를 설계할 때도 훌륭하게 사용될 수 있다. 사용자 인터페이스 자체가 시스템에서 왔다갔다하는 데이터를 사용자가 직접 눈으로 확인할 수 있도록 바꾼 것이기 때문에 시스템 개념과 인터페이스 개념의 구성원리는 다르지 않다. 기획자나 디자이너가 개발을 배우고 이해하라는 이야기도 이런의미에서 일맥상통하다. (나중에 글을 따로 쓸 내용이지만 개발방법론을 기획이나 디자인에서 활용하면 많은 장점을 가져 갈 수 있다.)

예를 들어보자

예를 들어 ‘운중동 피자’에서 새로운 모바일 애플리케이션을 만들고 싶다고 할 때 회원가입, 피자 주문, 고객의 소리함 게시판 등 많은 서비스 플로우가 필요하다.

그 중 피자 주문을 보면
Create- 사용자는 피자를 주문할 수 있는 화면이 있고 주문을 생성할 수 있다.
Read- 사용자는 주문한 피자를 조회할 수 있어야 한다.
Update- 사용자는 주문한 피자를 (피자를 만들기 전까지) 수정하거나 맥주를 추가 주문 할 수 있어야 한다.
Delete- 사용자는 주문한 피자를 (피자를 만들기 전까지) 취소할 수 있어야 한다.
완벽하지는 않지만 피자를 주문 할때 꼭 필수적으로 필요한 플로우가 다 포함 됐다. 회원가입과 고객의 소리함 등도 똑같은 원리를 적용해서 중복과 누락을 제거하면 된다.

모든 것은 만능이 아니다

CRUD는 설계한 인터페이스가 운영될 수 있는 최소한의 기능을 챙기고 놓치지 않게 도와준다. 하지만 CRUD를 채웠다고 완벽한 제품, 서비스가 되는게 아니라 말 그대로 ‘최소한의 기능’을 채운 것 뿐이다. CRUD를 기본으로 하되 추가할 기능은 추가하고 CRUD가 어울리지 않는 상황이라면 과감히 다른 방법을 사용해야한다.

무엇보다 지금까지 설명한 CRUD는 데이터를 모델링할 때 사용하는 방법과는 살짝 다르다. 좋은 방법론과 프레임워크라도 내가 제품을 설계할 때 사용할 수 없으면 무용지물이다. 또한 어떠한 방법론과 프레임워크도 내가 설계하는 서비스에 100% 적용될 수 없다. 좋은 방법을 발견했으면 어떤 문제를 해결하려고 나왔는지 생각해보고 본질을 파악해 지금 내 상황에 맞게 적절히 변형해 사용할 수 있는 지혜를 키워야한다.

Like what you read? Give 김종인 a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.