July 8th, 2019 | by Bartłomiej Undak
CSHARK’s Product MAKO: Rapid Software Development Platform
Table of contents
Value delivery, time-to-market, customer-centric approach. What do all of these have in common? In the case of software development, the answer is always the same: time and responsiveness. With MAKO, the CSHARK’s platform for rapid software development, you will be able to prototype, build and deliver software easier, faster, and in a more consistent manner.
Imagine a fully serviced building plot in a city. There’s electricity, gas, water, and telecoms. You also have building foundations. Strong but flexible, like modern buildings in Japan. Responding to outside force and adjusting to circumstances. They may bend but they won’t break. Thanks to MAKO, your project will be on the right track straight away, saving months of analysis, proofing, and learning by mistakes. Being a technological framework, MAKO saves months of analysis and development work, allowing to build products on an assembly line faster. That’s real money. You can build upon our technological background or order a software development service and CSHARK will build the house even faster than usual.
Rapid software development platform – the benefits
MAKO is a backbone. It means that you can develop cloud-native software, for any sector, using a technology stack which solves your business problem best. What we offer is a technological base that lets your team cut the time traditionally associated with the analysis of complex infrastructural issues, research about a multitude of off-the-shelf components available and their integration, design, and early implementation. If you’re following the IT industry you must have noticed how microservices architecture makes its way into the most preferred modern architectural style. The concept is not new, but only recently we have got access to the kind of infrastructure that allows us to use it in practice. Cloud, virtualization, containers, IaaS, DevOps, CI/CD, Open Source, etc. make microservices a first-class citizen with all its benefits (some of them I list in next paragraphs) and finally it’s possible to use it in a cost-effective way. Imagine what would it be like to pay for 50 servers, (hardware, and software), to host just 25 microservices – given everyone needs a DR host… Nowadays you just subscribe to your preferred IaaS provider and deploy your containerized services to the cloud. Full stop.
Having said that… We should see microservices everywhere, right? Why isn’t it the case? There are two main reasons. First, this style works best at a certain size of your application. If you need the ability to scale painlessly – either your system or your development team – that’s perfect. However, if you don’t plan to conquer the digital world with hundreds of thousands of users but rather develop a cookbook app to use in your kitchen, you’d get the job done in a more traditional way. The second reason is the number of things you need to figure out before you write the first line of your business functionality code. Dealing with a distributed system may seem in the beginning like you’ve been dropped on a parachute into the middle of a jungle, equipped only with a kitchen knife. That’s where MAKO kicks in! We give you a full-blown survival set, a backpack full of tools, and GPS loaded with the best maps of the terrain.
Wise men say that when you start your project from scratch, you would like to start MVP development or prototype quickly, just go with monolithic architecture and focus on business functionality straight away. It would save you time for the “plumbing” necessary in microservices. However, when your system scales and one day you’ll realize it can’t handle other hundreds of users or that your dev teams are tripping on one another’s toes, you would have to start the painful process of rearchitecting your “monolith”. It might take countless days and nights of figuring out all the necessary bits and pieces in the jungle of available technologies and options followed by months of code refactoring, not mentioning cultural changes your team(s) need to go through. Or you can use MAKO! We have already done the plumbing and we offer you a worry-free backbone for your microservices system. Once you deploy MAKO you can jump-start into developing business functionality, without worrying about hundreds of things to figure out now, or during the “heavy refactoring”.
Other benefits are rather obvious, but we have to mention them nonetheless. It takes 12 months and a serious amount of work to build what we have already achieved with MAKO. By using our platform, you save $500.000 in the cost of software development alone, not counting possible HR costs as well.
How does it work? Microservices in action
IT industry worked out several architectural styles over the years: from “monoliths” through modularity of various flavors to SOA. Some say that microservices is “SOA done right”. It leverages the full power of service-orientation in infrastructural, development, and operational terms. In this architectural style software consists of many “small, autonomous services that work together”. (1)
Let’s break it down and talk a little bit more about microservices. Benefits are clear and profound:
- Technology Heterogeneity
- Resilience
- Scaling
- Ease of Deployment
- Composability
- Optimized for Replaceability
- Organizational Alignment
From the technological standpoint, the last one is probably not that important but in reality, it matters most. As Conway’s Law states: “organizations which design systems … are constrained to produce designs which are copies of the communication structures of these organizations”. Usually, we fight against this. However, this architectural style can make it work for you by making your development teams multifunctional and autonomous and structuring them around microservices, promoting ownership, and embracing “you built it, you run it” principle. But can you actually run it? No business goal can survive a long application downtime, serious bugs in the code, or half-baked functionality. Because teams can work independently, on smaller parts of the final product, the chance of failure is minimized and the ability to maintain the project – maximized. In fact, factors like the team’s organization and ability to make small incremental releases drive focus from increasing Mean Time Between Failures to decreasing Mean Time To Repair. That’s responsiveness in practice!
That’s not all, though. Other factors play into the high usability of microservices:
Technology heterogeneity
You can mix multiple technology stacks in a single system. Just pick what fits best to solve your problem. A good example would be different databases tailored for various functional areas of your system: SQL Server, Elasticsearch, MongoDB and Cassandra together? – it can be done. No more compromises!
Cloud-native oriented
Systems can be run in public (Microsoft Azure, Amazon Web Services, Google Cloud Platform), private or hybrid cloud platforms and fully benefit from their features.
Resilience through decentralization
If one part of the system fails, others will continue to run. It opens the door to graceful degradation of business functionality instead of taking down the whole system. Thanks to that, you can also plan resources for the most critical parts of the product (while designing or through early deployment phase), keeping in mind which of your services require high availability. Cluster management systems like Kubernetes can recover failing nodes automatically, minimizing downtime while letting your administrator sleep at night.
Hypothesis-driven design and development
The ability to create, deploy and test new solutions rapidly within an application enables the scientific method to be used in the process of software creation. Software designer doesn’t have to guess, predict and assess anymore, he or she can simply verify the hypothesis by implementing the code into a working system.
Rapid software development platform – Why would you need it?
Microservices are not headache-free. There are some challenges you would normally observe while deciding about microservices being the architecture for your project. MAKO solves them all.
The complex configuration of the developer’s environment
MAKO delivers service templates that can be your starting point for the implementation of business functionalities in a project. Such a template provides convenient scaffolding and encourages industry best practices in your implementation.
Appropriate fault tolerance
Retry with variable back-off, circuit breaker, and wide support for these strategies across HTTP/HTTPS and event bus/message queue makes communication in your system resilient.
Data consistency
A system in a microservices architecture is distributed by its nature. Data management is, therefore, a challenge. MAKO delivers libraries with base classes for the implementation of patterns like Domain-Driven Design and Event Sourcing. Thanks to them and infrastructural components event bus/message queue, MAKO assures an optimal implementation of the system with distributed data.
Security
MAKO has a pre-defined set of components and practices that gives the industry-standard system security, both on authentication and authorization fields. To achieve that, MAKO utilizes standards like OAuth2, JWT, Claims-based authorization, HTTPS.
Internal and external communication
MAKO delivers easy-to-use components that support both external communication (client-server / gateway) and internal, between microservices. External communication is realized through a secure HTTPS protocol, and internal through HTTPS protocol or HTTP, and event bus/message queue.
Testing strategy and automatic configuration of tests, and implementation (Continuous Deployment pipeline)
MAKO delivers templates for automatic testing and strategy for their usage, based on the best practices. By leveraging this strategy and keeping name conventions, you can use pipeline templates (currently we support Azure DevOps).
Monitoring of the ecosystem is extremely important
You can immediately react when something fails or when the system is overloaded. MAKO delivers a health check mechanism for microservices. Advanced monitoring of network parameters is possible via Istio (service mesh).
The rapid software development platform will boost your business
Take the most out of your in-house talents. Thanks to our technological backbone for rapid software development, you can increase revenue by making technology work for you.
Contact us for details!
(1) „Building Microservices” Sam Newman, O’Reilly Media