온라인 카지노 게임드 아키텍처, 클린 아키텍처, 헥사고날 아키텍처 등 소프트웨어를 잘 디자인하기 위한 아키텍처들은 매번 변하고 발전해 왔습니다. 각각의 아키텍처들 간에 소로 다르지만 공통적으로 사용되는 개념은 바로 온라인 카지노 게임입니다. 최근 개발하면서 제가 생각하는 온라인 카지노 게임의 중요한 지점들에 대해서 간단히 정리해보고자 합니다.
최근 제가 생각하는 가장 중요한 지점들을 말하기 전에 먼저 짚고 가야 하는 지점이 있습니다. 바로 단방향 의존성입니다. 온라인 카지노 게임를 만든다는 의미는 곧 2개 이상의 온라인 카지노 게임를 만든다는 의미입니다. 2개 이상의 온라인 카지노 게임라는 것은 온라인 카지노 게임들 간의 관계가 정의된다는 뜻입니다. [1] 즉 어떤 계층이 더 상위관계에 있는지를 정의할 수 있습니다. 당연하게도 상위의 계층은 그 보다 낮은 하위 계층에만 의존성을 가져야 합니다. 만약 하위 계층이 상위 계층의 온라인 카지노 게임에 의존을 하게 된다면 결국 그 두 개의 계층은 경계를 잃고 같은 계층인 것처럼 행동하게 됩니다.
바로 앞 문단에서는 당연하다고 표기했지만 너무나도 깨지기 쉬운 원칙입니다. 개발자들은 이 원칙을 잘 알고 있음에도 불구하고 때로는 깨고 싶은 유혹에 노출되거나 실수를 범할 수 있다고 생각합니다. 최근에는 이런 계층 간의 의존성을 관리해 주는 툴도 있는데 이런 툴들을 통해서 실수를 막는 것을 강제하는 것은 굉장히 좋다고 생각합니다.
위와 같은 대전제가 성립되는 환경이라는 전제하에 중요하게 생각하는지점의 시작점은 바로 응집성입니다.응집성의 의미는 한 가지 계층에서는 해당 계층에서 정의한 역할만을 수행해야 한다는의미입니다. 해당 원칙을 통해서 개발자들은 코드의 특정 로직이 어떤 온라인 카지노 게임에 있을지 빠르게 판단할 수 있게 됨으로써 관심사를 분리하고 유지보수성과 생산성을 높일 수 있다고 생각합니다.
그렇다면 계층의 역할을 언제, 어떻게 정의해야 하는지를 고민해 볼 필요가 있습니다. 최근의 저는 계층의 역할을 최대한 늦게 정의하는 것을 선호하는 것 같습니다. 가장 기본적인 형태의 온라인 카지노 게임만 만들어 놓고 나서 새로운 요구사항들이 들어왔을 때 어떤 온라인 카지노 게임에 넣을지 고민을 하는 과정을 통해서 계층의 역할의 정의가 더 단단해진다고 생각합니다.
직접 요구사항을 경험해 보지않고 추측과 예상으로 온라인 카지노 게임를 미리 나눠놓는 것은 조금은 위험한 발상이라고 생각합니다. 어떤 도메인이나 구현체에서는 서로 다른 두 기능이 별개의 온라인 카지노 게임로 구분되는 게 좋을 수 있지만 또 다른 도메인이나 구현체에서는 꼭 그러리란 법이 없다고 생각합니다. 유연하지 않으면 오히려 부러지기 쉽습니다.
다만 위와 같은 접근방식을 적용하기 위해서는 역설적으로 언제라도 온라인 카지노 게임의 일부를 새로운 온라인 카지노 게임로 쪼개기 쉬운 상태로 만드는 노력이 수반되어야 한다고 생각합니다. 어쩌면 해당 노력이 온라인 카지노 게임를 미리 나누어 놓는 것에 비해 더 비싼 비용이라고 말하는 사람도 있을 수 있을 것 같습니다.하지만 저는 온라인 카지노 게임를 미리 나누어 놓는다고 해서 또 다른 서브 온라인 카지노 게임가 나오지 않으리란 법은없기에 해당 노력을 위한 비용은 항상 개발 중 감안해야 하는 비용이라고 생각합니다.
그렇다면 새로운 온라인 카지노 게임의 경계는 어떤 기준을 통해 설정하는 게 좋을지를 고민해 보게 됩니다. 저는바로 다시 대전제를 다시 확인해 봐야 할 때라고 생각합니다.새로운 온라인 카지노 게임의 경계를 마련해야 하는시점에 위에서 설명한 쪼개기 쉬운 상태의 노력이 잘 반영되었다면 온라인 카지노 게임 내부에서도 의존성의 방향의 추세가 보여야 합니다. 만약 보이지 않는다면 경계를 나누는 것이 과연 이 시점에 필요한 것인지 재고해 볼 필요가 있다고 생각합니다.
짧은 경험과 생각이지만 최근 계층에 대한 생각을 정리해 보았습니다. 사실 소프트웨어 엔지니어링에서 원칙이라는 것은 깨지기 너무 쉽습니다. 기준선을 명확하게 정의하기 어렵고 그 기준선 마저 사람마다 너무나 다르고 바뀌기 쉽기 때문입니다. 결국 저번 글과 동일하게 여기에서의 정리한 내용은 제가 생각하는 개발 원칙이 투영된 결과일 것입니다.
이 글을 읽는 개발자 분들도 아마 각자 나름대로의 온라인 카지노 게임의 기준이 있을 것이라 생각합니다.아마 그 기준을 만들게 된 경험과 환경 또한 서로 제각각 이겠지요.서로 다른 기준을 맞춰보는 것은 굉장히 어렵고 험난한 길인 경우가 많습니다. 그 이유가 서로 다른 경험과 환경을 맞추는 과정이라서 그렇게 어려운 것이 아닐까 생각을 해봅니다. 조만간 다른 환경의 개발자 분과 같이 일하는 경험을 하게 될 것 같습니다. 기준을 설명하되 유연성을 잃지 않기 위해 저 자신에게 다시 다짐을 하며 글을 마치고자 합니다.
[1] 이 문장에서부터 온라인 카지노 게임와 계층이라는 단어를 혼용해서 사용하였는데 이 글에서 둘은 같은 의미로 사용된 단어입니다.