Cloud enabled software engineering
Zoral Labs and Cloud Computing
Today, companies in all industries are looking for reliable, scalable and cost-efficient solution for their web-applications. More and more services are moved to the web, more and more customers and employers are looking to access information through web-applications. This is increasing pressure on infrastructure, systems and IT resources. On the other hand, the global business environment is becoming less predictable and more volatile. Thus, organizations need to be more agile and dynamic. In fact, failing to respond quickly to such changes can negatively impact business growth or put your company at a competitive disadvantage. Attempts to allocate more IT resources than required may only make problems worse. It can also be very capital intensive. Switching to cloud based infrastructure and cloud-based services may hold the answer to these challenges.
Cloud computing has become the new fashion in technology infrastructure and often the deployment platform of choice for enterprise and commercial applications. Companies of all sizes are considering clouds as a replacement for traditional systems due to the many benefits they can provide — less capital intensive, lower costs while providing more flexible and scalable on-demand expansion. Cloud computing provides a better mechanism to match revenues with expenses.
The most obvious advantage of cloud computing is the amount of money that can be saved as a result of switching from a traditional infrastructure. Cloud infrastructure services deliver computing infrastructure, (typically a platform virtualization environment), as a service, along with block storage and networking. Rather than purchasing servers, software, disk space or network equipment and managing the underlying hardware and software layers, clients instead buy these resources as a fully outsourced service.
But there is another aspect that we at Zoral Labs consider when we think about the potential of cloud – when we work on cloud projects we think not only of business efficiencies, (they exist and are enumerated below), but we also participate in new businesses ideas, even new industries and innovation that are being unleashed as a result of the cloud. Many of our clients come to us for our experience in such innovation, not just to cloud-enable their software.
Practical and obvious benefits to cloud computing follow – but Zoral Labs can help you progress beyond the obvious – let us help you use the cloud to innovate.
Benefits of the Cloud
Efficiency: Cloud services provide access to resources on demand, from a single system to massive clusters or grids, in real time and for a reasonable price.
- Operational expense: Usage of Cloud services allows CFO’s to convert capital expense to operating expense
- Reduce operating expenses: Usage of Cloud services optimizes infrastructure utilization.
- No resource reservation: Cloud computing provides scaling in real time on demand, which, when combined with automatic scaling, removes the need of reserved resources to meet peak demands.
Flexibility: Usage of Cloud services is becoming prevalent.
- Cloud infrastructure: Typically, a service that provides compute capacity in the cloud also provides an access to additional cloud infrastructure and services, which can be used by applications. This can significantly decrease application development and deployment time, improve performance and reliability.
- Agility: Cloud Computing increases flexibility in service creation. Organizations can more easily deploy and manage business-critical applications than with traditional IT infrastructures. This facilitates easier and better-managed change or upgrade of IT services and applications.
Billing: Billing model offered by Cloud Computing vendors allows organizations to pay for the IT resources it actually utilizes. This makes for better alignment of IT costs with business profitability objectives.
Cost reduction and effectiveness, dynamic scalability and flexibility, performance and reliability are the key benefits the Cloud can provide. By now, it is a common belief, that the Cloud computing paradigm will bring new opportunities in many industries for companies of all sizes.
Zoral Labs Cloud-based Application Development Services
Whether you are moving to the public or a private cloud or building / re-engineering an application for the Cloud, you need experts to ensure that your applications are properly architected to take full advantage of the Cloud environment.
Zoral Labs has proven, deep, practical expertise in Cloud computing and Cloud-based, BIG DATA solutions. Our comprehensive and innovative Cloud based application development and re-engineering services are designed to enable companies to take full advantage of the Cloud computing paradigm and reap the benefits of on-demand scalability. Our team of experts have years of experience in managing, architecting, designing, developing and implementing high-performance, 24x7, BIG DATA applications based on Cloud/ Grid/ Distributed/MPP enterprise architectures. Our software engineering professionals have extensive experience with different layers of the cloud stack – Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), Data as a Service (DaaS), Data Quality Assurance as a Service (DQAaaS).
Migrating or developing applications to the Cloud becomes substantially less risky when leveraging an experienced, high-end engineering partner such as Zoral Labs. We have engineering and advanced data management ‘know how’ to make sure that your next Cloud based project will be successful.
Adapting existing applications to the cloud
High-performance applications are often developed for a specific target platform and executing them in the Cloud environment often requires substantial adjustments, tuning and re-engineering effort.
Any existing web-application that can benefit from dynamic and unlimited scalability can be deployed to the Cloud. To get the maximum benefit from migration to the Cloud environment, applications need to be re-architected.
As part of re-architecture and design, Zoral Labs will deliver: current state, future state cloud-based architecture and a roadmap and recommendations of how to migrate from current to future state while maintaining and not disrupting your business operations.
Migrating to the cloud
Many companies built their well-designed, state-of-the-art, mission-critical application from the ground up and hosted them on their own infrastructure. Now they need to migrate such applications to the cloud to get more scalability, reliability, agility and reduce costs. In this case, minimum re-engineering effort is required – the system is built well, thus we focus on cloud migration.
We start the cloud migration process by analyzing your current infrastructure and business processes. We then analyze you application to determine minimal changes required to get more benefits from the migration to the Cloud environment. We produce a formal benefits and ROI analysis in support of our recommendations. Once you are satisfied with the planning results, we will do cloud-specific changes in the configuration of your application, build the corresponding cloud environment, test it, stress test it, tune / optimize and finally deploy your application to the Cloud.
Every migration process consists of the following steps:
- Analysis of your existing deployment infrastructure and business processes
- Analysis of the application
- Review of current state architecture
- Development of future state cloud-based architecture
- Development of Recommendations
- Review of recommendations with the client
- Development of a migration strategy, benefits and ROI analysis
- Migration planning
- Adaptation of the application to the Cloud environment
- Migration execution
- Post-migration monitoring and tuning
Following the cloud migration, Zoral Labs can offer technical support and maintenance for the new application instance, including:
- Cloud environment management
- Further optimization and feature / service development
Sample Case Study:
For a leading UK software house, our client’s re-engineering / cloud migration objective was to create a high-quality, dynamically scalable, flexible, world-class product and services in the field of real-time Internet data processing. Huge amounts of data need to be processed and analyzed for a rapidly growing list of customers. Customers generate a specific and continuously changing processing load requirements on the system. After detailed analysis of the current architecture and business processes, Zoral Labs found that the current system was not as scalable and flexible as the business processes require. Current systems and existing business processes were hard to customize to different customer needs or extend, especially in the business logic layer.
Zoral Labs performed detailed requirements, architecture, design and code analysis of the current system in order to have a deep understanding of the most expedient, cost effective and efficient cloud migration and re-engineering strategy and roadmap to recommend.
To achieve the desired level of scalability and flexibility, and quality, code and architecture must be modular and low coupled. Only then may different application components be scaled separately from each other, depending on their loading requirements. On detailed examination, the current system did not fully achieve such ideals.
The Zoral Labs architectural solution was to extract data processing to a separate set of components that are completely stateless. So they can be started and stopped on demand. From ROI perspective, to reduce the cost of the service. Zoral Labs and the client decided to move the whole system to Amazon infrastructure (EC2, EBS, S3 and other services). This decision allowed us to reduce configuration costs and testing costs as hardware resources could be provided as and when needed and paid for on a usage basis. Zoral Labs implemented the whole application configuration with AMI and automated deployment tools, thus there was no need for a separate operational or configuration management team. Also, this sped up development. New ideas were tested and implemented very quickly and there were no delays or bottlenecks with the grid platform.
To dynamically scale and reduce implementation risk, a pull (or asynchronous communication) system approach is used where the processing components take new tasks only when they are free. For this purpose we use a mix of JMS (ActiveMQ) and AMQP (RabbitMQ) for different types of tasks. These solutions allowed us to balance load between different processors and provided both reliable-slow and unreliable-quick message delivery protocols. Using different runtime metrics and AWS API the system analyzed current loading and adjusted resources to minimize costs and still process data as defined in customer SLA.
Processors are stateless. It is very easy to update or dynamically inject system components with new code. So new features were deployed very quickly and Continuous Deployment process and best practices worked well.
The system stores very large amounts of data. For this purpose we use a multi-layer database approach. To be cost effective we deployed MySQL database as main store. In order to provide the required level of performance and availability it was configured in master-slave replication mode with some read only slave instances. Using EBS it is easy to provide data snapshots and store them in S3. Additionally database servers are started in different availability zones to avoid single point of failure. To store huge amount of data in MySQL we implemented a sharding solution based on unique keys for data regions. Additionally, to improve performance and decrease loading on the database, we actively used distributed cache with Ehcache and NoSQL solutions (Cassandra, Redis). Text search ready data were stored in Lucene index farm. It is also sharded and stored on the set of EBS volumes. All database structure changes were versioned, so it was easy to migrate data for any version of the system. Rollbacks in case of failures were done using EBS snapshots.
Communication between all parts of the system were done with several protocols: RMI, HTTP and JMS. JMS was used for most parts of distributed or time-consuming tasks. Other tasks were done via RMI with retry and failover logic. System API was available via both RMI and HTTP. Elastic IP addresses were used to make external access independent from internal cloud architecture. Some common integration patterns were implemented using Zookeeper.
Monitoring of the overall system was done with Nagios and Amazon CloudWatch API. Also some internal monitoring with business and technical metrics were done inside the system. In case of important errors, a special notification channel in JMS was used to notify all interested components.
As a result of Zoral Labs efforts in migration and re-engineering, the client now has a highly scalable and flexible, cloud enabled system. The system is deployed in production with more then 15 public releases and is extremely well received by the customer base. This is a feature rich, high customer demand cloud-based system and service. New features are continuously developed and successfully added to the production environment. This cost-effective, cloud-based solution was re-architected to have a long life span accommodating very rapid business growth and development.
Build an application for the Cloud
Building applications for the Cloud requires experience and passion in software and enterprise architecture, from design to scaling and monitoring, to innovation. At Zoral Labs, we can build your entire application in the Cloud and optimize it to run on different Cloud environments.
Cloud computing is an evolving paradigm. You need your investment to be relevant both now and in many years to come. Thus, it is vital to select both a proven and forward-looking cloud enabled technology stack. There are solutions that are already becoming outdated or will be outdated soon. There are cutting-edge frameworks and there are platforms that are proven now and are being developed in the ‘right’ direction and with the ‘right’ vision and investment.. As practitioners, and both trendsetters and followers, Zoral Labs can help you select the ‘right’ solution from the top to the very bottom of the cloud computing layers and options.
There are many components to consider when designing a cloud-enabled architecture. Cloud gives you a lot of flexibility to choose at every aspect of your platform. Further, this flexibility is available dynamically, at runtime if your cloud is correctly architected. We can design your cloud to provide your required level of scalability, reliability, availability, consistency and security at an optimal cost. Our design will show you how your cloud can be easily scaled as your business grows or evolves.
While being more flexible, cloud computing is also more complex. It allows for any given resource to become unavailable without noticeable impact on the service as a whole. Much more care must be taken to ensure reliability. Zoral Labs has practical, proven methodologies in cloud computing to build a system that will have required level of fault tolerance and scalability.
New technology is sometimes a challenge for IT operations to deploy and reliably monitor. After we develop and deploy your cloud-base system, Zoral Labs can offer you a wide range of services to help with operations support, starting from a creation of a multi-level control and monitoring infrastructure integrated with your own or vendor system, to providing you with full-blown, managed private cloud services.
Zoral Labs ‘cloud’ professionals have worked with industry leading clients and software houses to architect, design, build, extensively test, deploy and support large, complex enterprise cloud-based applications. Zoral Labs engineers and researchers are directly involved in making widely known cloud computing software stacks (such as Apache Hadoop or Cassandra family of products) better.
Sample Case Study:
One Zoral Labs client builds and sells massive (100’s of Terabytes) structured, time-series databases of data, categorized and extracted from the entire WWW, as a Data as a Service (DaaS). The service is deployed in production on a sizable private cloud running a massive array of complex artificial intelligence and data mining software.
The lowest cloud layer is handled with Oracle Grid Engine that provides solid hardware resources monitoring and process scheduling. It decides where to run task processors and how much can single hardware host handle at any point of time to ensure full resource utilization without significant overload.
Different software versions (with multiple versions running on the cloud at the same time) are stored in Apache HDFS replicated file system. This file system is part of Apache Hadoop project and is efficient for storing huge blocks of data.
Apache Cassandra is the cloud database utilized. It provides fast and reliable NoSQL solution to store data fetched from the Internet and analyze unstructured, semi-structured and structured data with good random access speed and latency characteristics.
For this project, Zoral Labs built a highly configurable, cloud-based artificial intelligence and data mining factory that itself is configured and deployed with a custom job-distribution system that reliably processes 10’s of millions of independent jobs for a number of project or client specific, configurable tasks. For example, it can support simultaneous analysis of all WWW web sites in the Internet as distinct jobs with monitoring, granular fault-tolerance settings and failure reporting facilities. The system can process multiple data mining or web mining complex tasks for multiple clients/projects and monitor cloud utilization for each task/client. If the tasks are similar, the system ‘knows’ how to combine similar client/project data mining requests to optimize time and space.
The individual task processing itself, (which can be configured to be part of a project/version/client), can be simply configured with factories Data Flow Management system. Data Mining and Artificial Intelligence engineers can simply specify required processing steps with an XML configuration file.
While often job-level parallelism is enough for most cloud-based systems, as the private cloud of our client is becoming larger and the data mining is becoming more sophisticated, the system now also supports in-job grid parallelism where each task step can be executed by a distinct set of handler processes. Apache Zookeeper helps to coordinate single job parallel execution.
The ambition of our client is to structure the web, thus ‘smart’ scalability, data management and performance optimization options are constantly being injected into the system and its already formidable infrastructure.
Utilizing this innovative machine learning and artificial intelligence, cloud-based factory, our client is already experiencing strong business growth and is an up and coming company to watch in BIG DATA and Data Mining space.
Such large-scale, complex projects allow Zoral Labs to say that we are a proud part of the cloud-computing world, ushering practical innovation and helping businesses to create new and exciting cloud-enabled products and services.
To learn more about our Cloud-based Application Development Services please contact us at firstname.lastname@example.org