Our thoughts on the future of digital innovation and the cloud.
Building an Enterprise Web Application and Deploying on Microsoft Azure
A partnership in design and architecture done right
Productive partnerships are a hallmark of BlueSilverShift’s ability to maximize clients’ potential in the cloud. Our partnership with Celestial Software, a Vancouver-based company that develops complex enterprise web applications for businesses across verticals, provides a powerful new offering to our clients.
If you are looking at developing bespoke software or applications for your business, we can help. First, let us show you what our partnership’s process looks like as we meet your programming needs.
Most people have heard the saying, “form follows function,” and software and application design is no exception. Understanding what a business needs, how it flows, and who the application serves is the first step.
Celestial’s specialization lies in design development, with over 20 years’ experience leading companies through this process. Working together with clients through a war room or story-boarding process identifies business needs and goals. This results in a Business Development Requirements document, which outlines the required specifications and is signed off by the product owner.
This critical first step, done correctly, can save pain and money down the road. Most importantly, the solution must serve the business, not the technology. And, while it is important to allow stakeholders across an organization to have input into the process, everyone should rally behind the final decision. It’s important to support staff through this process, because change is the hardest part of digital transformation.
Once the design specifications are clear, the engineering and technical teams can begin their work on the enterprise web application.
Architecture: creating the backbone
Invero offers significant experience in architecture creation. Taking a technical lens to the design documents, the team develops a wire diagram, then decides on back-end technology such as deploying on premises or in the cloud. From there, engineers build the software stack and an end-to-end block diagram which identifies critical touch points and integration challenges. Next, flow charts, project management processes, and developer tools break the work down into smaller, efficiently managed blocks.
Other key considerations at this stage include:
- Data pattern selections. What data should be included in the application, and what are the scaling requirements?
- Ingress modelling. Is inbound traffic appropriately controlled?
- Security. What are the identity and access management needs? Do traffic controls allow necessary access while protecting data from malicious actors?
Employing an automation method such as continual integration, continual delivery (CICD) allows developers to make controlled changes to code. For instance, Amazon.com deploys 100 code changes per hour, and these cannot be introduced manually. Instead, the code is written, monitored, and then moved into the production environment after satisfactory observation. Then, the production follows the lead of the change. This enables developers to focus on writing features, which is where their greatest value lies, letting the computer handle the tedium.
There is an old adage, “humans think and computers work.” Why would a human want to do all that work that can be programmatically put out there?John Dobson, Co-founder and Chief Cloud Architect, BlueSilverShift
It doesn’t take much to proactively plan and prepare; not doing so can become very costly over time. Engaging specialists in bot design and architecture ensures the maximum build outcome while minimizing developmental pitfalls. This is again where BlueSilverShift and Celestial are powerful as a team.
Development: teams are in it together
The goal of development is to create a long-life solution that performs across various use scenarios and in heterogeneous IT environments. To achieve this, it is important to determine and stick to best practices. A disciplined, test-driven development approach may seem to slow the process early on, but more than makes up the time further on. Taking the time to develop an elegant code upfront means that the application can to grow and evolve in the future. The code is created through the following stages:
- Proof of Concept coding ensures the desired outcome is possible.
- Pre-production coding begins to build the robustness and functionality of the code for the enterprise web application.
- Production quality coding demands robust documentation, with developers conducting unit tests in tandem with the Quality Assurance (QA) and test team. This iterative testing ensures that all aspects of the code are being verified at every steps, and that teams are on page and working to maximum effect.
That said, many companies are running legacy systems, or systems that have been managed by multiple individuals over the years. In this instance, Celestial can provide an architecture and code review. Led by a senior engineer over a number of weeks, the review effectively determines whether to enhance an existing enterprise web application, upgrade to next version of framework, or do a rewrite.
Testing and Quality Analysis
This is where the proverbial rubber meets the road. At this stage, it is important to incorporate automation scripts as early as possible; a CICD pipeline can deploy changes through to users. At the same time, iterative tests should be ongoing, with teams working in tandem to deliver better results. Developers can then focus on upgrading and introducing features with the time these measures save.
A tandem process means that the development team is realizing value right away, as QA is processing and reviewing the work ongoing. While working in partnership undoubtedly produces better results, it is worth considering an external partner for this work. External development and QA teams are better able to stay disciplined and avoid shortcuts, versus an in-house team that may be rushing to meet deadlines. This can avoid costly errors.
It can also be tempting to save upfront costs by having an in-house generalist introduce changes to a program. While changes sometimes can be introduced internally by a person with general knowledge, it is difficult to see the downstream effects of that change, especially with legacy applications or technology. It is not enough to say, “well, it works on my machine;” system deployments must work across browsers and a variety of devices, and only testing can ensure this.
Indeed, it is better to find mistakes in the QA stage than in post-deployment. Uncovering mistakes increasingly later in the development process scales the costs by orders of magnitude at each step.
Production is a partnership, too
Deploying infrastructure as a code ensures that the development, QA/testing, and staging environments remain identical. It is also important to ensure that programs work correctly on an array of browsers and devices. So, the final step of testing is to obtain feedback from sensors across the globe, which monitor for loading speed, daily changes, and cost management for cloud environments. This not only ensures solid production, but also finds opportunities for cost optimization.
The final testing stages give way to a soft launch, with select employees or trusted customers providing feedback on their usage experience. If the process has been done correctly, then generally only small discretionary tweaks remain.
At that point the production process re-starts, as improvements can start to be cycled through almost immediately, with continual integration.
The power of partnership
The partnership between BlueSilverShift and Celestial offers exceptional skill and expertise, whether servicing a large Fortune 500 company or a 15-person start-up. Complimentary specialisms in architecture and design produce exceptional solutions and highly efficient results, allowing us to drive customer success.
This partnership makes it a case of 1 + 1 = 3. Or perhaps, even, 1 +1 = 11.