본문 바로가기
Homo Coding

데이터 양과 비즈니스 로직의 복잡도

by javauser 2012. 1. 19.
흔히들 데이터 양이 많으면 비즈니스 로직이 복잡해진다고 생각할 수 있다. 하지만, 데이터의 양과 비즈니스 로직의 복잡도는 그리 관계가 없다. 오히려 데이터 내의 개념들의 양과 더 깊은 관계가 있다. 가장 단순하게 게시판 글을 생각해봐도 그 내용이 한없이 길어도 단순히 내용만을 보여준다면 비즈니스 로직은 그리 복잡할 것은 없다. 하지만, 그 게시판의 글의 내용에 대한 의미들을 분석해서 나름대로 체계적으로 보여준다면 이는 이를 어떻게 보여주어야 하는 개념들만큼 복잡도가 증가하며 그 개념들 간의 관계까지 고려한다면 기하급수적인 비즈니스 로직이 생겨날 수 밖에 없다.

TodaysArt 2008 - 16n _ ƒ5³
TodaysArt 2008 - 16n _ ƒ5³ by Haags Uitburo 저작자 표시비영리동일조건 변경허락


게시글을 서론, 본론, 결론의 형태로 묶음 단위를 생각해서 화면에 보여준다면, 텍스트 내에서 이를 구분할 수 있는 구분자가 삽입되어서 저장되어야 하며, 조회 역시 이를 체크해서 서론, 본론, 결론의 형태로 화면 출력을 해주어야 한다. 다시 여기에 이들 간의 관계를 엮는다면 서론은 반드시 본론 앞에 오고, 본론은 반드시 결론 앞에 온다는 규칙을 추가해볼 수 있다. 또한, 이들은 각각 서로 다른 화면에서 서론만 보여주거나, 본론의 일부, 혹은 결론의 일부를 보여줄 수도 있을 것이다. 물론, 좀더 복잡해진다면 서론과 본론, 혹은 결론끼리의 조합도 생각해볼 수 있다. 이제 비즈니스 규칙은 좀 더 세분화되고 복잡해지기 시작한다. 처음에는 단순하게 게시글이라는 하나의 큰 데이터 덩어리로 생각했는데, 해당 내용에 대한 분석의 의미를 더함으로써 비즈니스 로직은 더 복잡하게 된다.

지금의 웹과 기술은 기존의 단순한 정보 덩어리를 하나의 관점에서 처리하는 시대에서 그 정보 덩어리를 좀더 의미있는 정보의 조각으로 세분화시켜서 차별화나 더 자세한 정보를 표현하고자 한다. 이는 데이터에서부터 비즈니스 로직까지, 혹은 아키텍처 영역까지도 영향을 미친다. 단순히 하나의 텍스트 덩어리에 구분값을 삽입하던 정보는 여기 저기 찣겨져서 흘러다녀야 하며, 때로는 전혀 다른 정보와 조합을 해야 한다.

아주 적은 양의 데이터라 하더라도 데이터가 사용되는 목적과 지점, 그리고, 그 데이터의 구조, 관계에 대한 의미들이 비즈니스 로직의 복잡도를 증가시키게 된다. 빅 데이터 시대에 이러한 비즈니스 복잡도의 영역도 같이 고려해볼 수 있다. 단순히 데이터가 큰 것만을 관리하는 형태가 아니라, 데이터와 데이터의 관계, 세분화 등의 내용은 앞으로 더 크게 확장되고 고려해야 할 영역이 된다.

이와 같은 형태의 시스템을 위해서는 무엇보다도 정확한 의미의 규칙을 정의하는 것이 무엇보다 중요하다. 서론, 본론, 결론의 세부분으로 나누는 규칙은 서론과 결론으로도 의미가 있는지, 혹은 본론과 결론 만으로도 구성된 정보가 사용될 수 있는지, 혹은 본론의 일부 영역을 어느 영역까지를 의미하는지를 명확하게 정할 필요가 있다. 규칙의 명확화는 바로 시스템에 그대로 적용되며, 이는 시스템의 특성이나 사용자의 영역별로도 상당히 세분화가 될 수 있다. 과거의 '게시글을 화면에 보여준다'라는 규칙은 서론, 본론, 결론을 어떠한 조합으로 어떠한 순서로, 그리고 화면의 크기나 사용자의 특성별로 어떻게 보여줄지에 대한 더 자세한 규칙을 필요로 한다. 규칙의 세분화로 인해서 이를 처리하는 비즈니스 로직은 점차 복잡해질 수 밖에 없다.

또한, 데이터 사이의 조합의 영역에는 새로운 형태의 정보나 규칙이 발생된다. 서론과 결론이라는 두가지 영역이 조합되어서 순서, 표현방법 등 다양한 개념들이 더 나타나며, 이를 처리하기 위한 별도의 영역도 생겨난다. 단순히 데이터의 결합이 정보 양의 증가만을 의미하는 것이 아니라 더 복잡하고 거대한 비즈니스 로직을 만들어내며 이러한 경우의 수들이 증가함에 따라 검증하는 노력 역시 급증할 수 밖에 없다. 더 확장성을 고려한다면, 서론, 본론, 결론의 영역이 서로 조합이 가능하도록 전반적인 아키텍처 구조를 개선시킬 수도 있다. 심지어는 게시글 이외에도 타시스템이나 다른 유형의 광고성 글들도 조합될 수 있는 형태도 고려해야 한다.

데이터가 증가하는 것 못지 않게 비즈니스 로직의 증가 역시 무시할 수 없으며, 단순히 양의 증가가 비즈니스 로직의 복잡도를 말해주지 않는다. 데이터가 가지는 의미와 내재적인 구문의 파악이 먼전 선행되어야 이러한 비즈니스 로직의 복잡도를 관리할 수 있는 형태로 구성이 가능하다. 
반응형

'Homo Coding' 카테고리의 다른 글

기준의 법칙  (0) 2011.10.28
방어적 프로그래밍  (0) 2011.08.05
프로그래밍 초보자가 알아야 하는 9 + 1 가지  (1) 2011.07.20
런타임 계열 예외와 checked 예외  (0) 2011.05.07
예외에 대한 비용  (0) 2011.04.28