I have always been seeking for the perfect technology, best programming languages for application development, and robust system design. It’s been years now since my first revelation. Never found an ultimate solution that fits all the important design demands like: simplicity, rapid development, manageability, modularity, extensibility, mobile friendly UI, and high-scalability/availability oriented architecture. And on top of this crusade of mine it’s still hard to find T-shaped people doing it. You can’t have your cake and eat it too ;) I know, but it still entice me.
That’s why we shifted our mindset to work on a different kind of technology-platform concept, The Kraken Application Design. It’s all about the development approach we use.
The Kraken Application Design enables our team to work to their greatest strengths in respect to both, their technology preference and programming skills. With the right choice of technology stacks that we provide with Snowshoe Linux, it’s possible to successfully manage a distributed team over the world with different backgrounds working on the same project.
Who is the team anyway? It’s a team of developers with usually strong coding skills, but perhaps lacking the taste for making a nice looking GUI. Sounds familiar? Some of them might be without an enterprise DB-design experience. Few of them might be great PHP/Python developers experienced in front-end GUI interface design and scripting, but no way they would ever leave a black hole when developing enterprise information systems. It’s more like a never-ending last-mile effort.
JAVA developers are different. They know less about fairly utilizing system resources or underlying technology, but they are very good at making large-scale applications, preferable banking-kind of software. Yet, most of developers just hate to optimize reports or even work on reporting modules at all. On the contrary, analysts are all R and would kill for the messing-with-large-data opportunity, but they don’t know how to code application.
And they would all like to work from their home offices. You know, the freelancers kind of people – me included. It’s an art to bring the best of all the N-th developer’s worlds.
The Kraken concept. The easiest way to apply the concept is to consider the front-end GUI application and administration interface as an independent layer comparing to data, business rules, and low-level application logic. It’s similar to MVC software architecture pattern, but the only glue are RESTful web services. It’s a starting foundation that enables greater freedom in using many different technologies among developers.
The first step includes modeling of low-level application rules, DB design, and organizing the storage for (un)structured data. Everything later is exported through web services toward upper layers, such as administration interfaces or mobile apps. Usually, it’s all done by the developers who are not keen on GUI.
Basically, at this stage of development we mostly deliver the core set of RESTful API. If you need to open an account, or fetch some data, perform some business logic, make a purchase – you always need to make a web-service call. A great B.P.C.F. (Black/Plain/Console/Freak) said once:
No upper layers should mess with the data directly or override business logic in any way. Simple as that.
From this point forward we can use any programming language independently of underlying technology. A team of developers could use PHP, JS, jQuery, or Bootstrap as a development stack to make a web portal on top of our RESTful API, and yet another team can work in parallel on developing an administration interface in JAVA. It’s a various mixture of technology stacks and programming languages combined together by distributed teams on the top of different versions of web API. It’s your “workhorse” programming language utilizing our RESTful interface.
The only glue we have to keep in perfect order is a RESTful API. With new features we introduce next API version and keep maintaining the old one. The thing we like the most is that we can develop complex systems without going into GUI development early, or to have everything supported through administration interface. Maybe without any GUI at all? (Yes. Yes. Yes. Gimme the console.) Ok, we just let it grow as needed over time.
Still building on the right stack? It might be the time to release the Kraken once again.