Businesses often look for a quick technology solution to satisfy their needs. Many times, selecting a vendor or commercial off-the-shelf (COTS) or software as-a-service (SaaS (News - Alert)) application is a great choice. Especially when commercial applications offer functionality that is ready to go and can be implemented quickly with minimal development or customization work.
On the other hand, sometimes a company’s competitive advantage is tied to custom applications, (the “secret sauce”) that enable the company to function more efficiently or align with internal processes. When a need for a new capability arises in this situation, businesses often struggle to find vendor products that meet even 50 percent of their new requirements. This is the conclusion Avalon Healthcare Solutions, a laboratory benefit management company, reached after it looked at commercial products and realized a custom solution was the best path forward.
Where to start
Developing custom applications in the cloud requires a change in approach at each stage of application development from architecting the solution, design and build to deployment and operations. Application development teams must consider the underlying infrastructure of on-demand capabilities, automation, scalability and elasticity while designing for the cloud. Developers also need to be aware of the tools and services offered by the targeted cloud provider and know when to incorporate them into their application.
For example, developing custom applications for Amazon Web Services (News - Alert) (AWS) cloud would mean designing for failure versus designing for uptime. This means a real change in architectural approach, assuming that anything you design will fail at some point and you must account for it in your architecture. This would mean leveraging AWS multi-zone (AZ’s), multi-regions capability to spread the infrastructure in multiple physical locations and facilities. If there is an outage in one region, then another can continue to serve. High availability and resiliency must be part of the design and implementation of the application architecture.
While this could add costs to the overall infrastructure, teams must look to leverage cost-effective AWS managed services such as RDS, S3, Glacier, SQS, SNS and Redshift to optimize overall infrastructure costs. Open source, cost-effective Amazon Machine Image (AMI), such as Amazon Linux or Ubuntu (News - Alert), also can help reduce licensing costs significantly. Additionally, services, such as Lambda, used along with API gateways and micro services offered by AWS would allow the building of an application on a serverless architecture.
What to watch out for
While developing a custom application on the cloud offers a cost-effective, accelerated development lifecycle, it can also be daunting. Development teams must understand the limits and capabilities of new tools and adjust to the rapid evolution of these tools. Learning to incorporate automation across environments, Continuous Integration and Continuous Delivery (CI/CD) as well as DevOps requires additional skills and planning. Designing and implementing appropriate security for applications and data requires niche skills and experience. Operational aspects such as logging and monitoring alerts must be designed and implemented. Operational tools such as monitoring through AWS native CloudWatch service or Splunk (News - Alert) are necessary for operations and production support teams to monitor applications effectively. Services such as CloudTrail provide excellent audit trail capabilities.
While teams can continue to perform traditional, manual development and deployment in the cloud, a preferred way is to leverage cloud’s automation offerings to implement an automated deployment model that makes code promotion over multiple environments easier. Using AWS native CloudFormation with Chef or Puppet would provide complete automation capabilities.
Protection of applications and data in the cloud is a huge responsibility and AWS’s VPC’s, subnets, ACL’s, Security Groups (SG’s) and routes must be designed and configured to attain needed security without locking down an application such that it won’t even function. Sensitive data at rest, in motion and in use must be encrypted. Leveraging IAM capabilities for access management and AD integration offer desired controls.
Companies who are new to cloud-native applications may want to take a page from the AWS playbook. AWS’ success has come in part to its ability to continually evolve and grow its services and offerings, taking an iterative, incremental approach while keeping an attitude to try new things.