Developing a technology solution is quite complicated nowadays. For starters, it requires thorough research on technology trends. Once you begin, you will be hearing the term ‘Cloud’ a lot; a service that’s gradually becoming the norm in the business world. There’s a lot to learn about cloud computing, and not everything can’t be covered in a single article obviously.

This blog will serve as a guide to using the three main categories of cloud computing:

  • Software as a Service (SaaS)
  • Platform as a Service (PaaS)
  • Infrastructure as a Service (IaaS)

So what exactly is cloud computing?

To answer this, you need to know what Cloud is. In a nutshell, the cloud is basically a sophisticated infrastructure technology. The important constituents include interconnected servers, databases, and computers. Multiple users can use the cloud but only based on their individual access permissions.

The main traits of cloud technology include:

  • A simple sign up is all that is required to avail the cloud service unlike traditional IT services.
  • Accessible across multiple platforms including mobile, laptops and desktops.
  • Billed only for the usage (pay-as-you-go model)
  • Scalable and flexible to meet your demands
  • Multiple users can share resources uninterrupted

Let’s get into the details.
 

SaaS

 
The most popular of all cloud services, SaaS might be familiar to you in many different forms including Google Apps, Netflix, DropBox etc.

Features

  • Accessible through web browsers
  • Generally hosted on remote servers so the users need not be concerned about hardware upgrades, software updates and patches
  • Integration with third party applications done using APIs
  • Application is managed from a central location

Where it’s suitable

  • If your applications considerably raises or reduces demand
  • If your applications are meant to be accessible through web or mobile
  • For short term projects where you will be billed only for your usage
  • For startups that want to launch their websites without hassle

 

PaaS

 
Like the name suggests, PaaS or ‘Platform as a Service’ provides a platform for creating the software which is later delivered over the web. PaaS and SaaS share a few common traits, though the former offers a platform for the developers to work on. The benefit of this is that the developers will be able to focus on developing the software without being concerned about storage, load balancing, operating system, software updates etc.

Features

  • Based on virtualization technology, which means you can scale up or scale down resources as per your requirements
  • Integrated databases and web services
  • There are tools to manage billing and subscription
  • Provides services that facilitate software development, testing and deployment
  • Multiple users can utilize a single developmental application

Where it’s suitable

  • If the development process demands speed and flexibility, and if multiple developers and third parties are involved
  • If agile methodology is practiced in software development, PaaS makes it easier for developers to overcome the challenges associated with the methodology
  • Large organizations can use PaaS if they intend to personalize applications
  • If the organization wants to reduce overhead costs by utilizing PaaS’s infrastructure

 

IaaS

 
IaaS or ‘Infrastructure as a Service’, like the name suggests, provides a cloud-based infrastructure that includes storage, servers, network and operating systems based on the demands. This is a unique service that allows organizations to procure only the resources they need (as a service) rather than purchase the whole infrastructure.

Features

  • Resources can be purchased as a service
  • Dynamic scalability priced based on the infrastructure
  • Multiple users on a single piece of hardware
  • Great control over the infrastructure
  • One of the most flexible cloud computing models

Where it’s suitable

  • If the organization needs complete control over the applications they use
  • For startups who wants to go live faster without having to invest time in procuring the hardware and software
  • For applications that need to be scaled up based on traffic spikes
  • For organizations that are uncertain about an application and how its evolution will benefit them in the future

 

Conclusion

 
Everything mentioned above should have made one thing clear to you – each of the three cloud computing models offer unique features and functionalities. So the choice actually depends on the requirements of your business. The benefits are obvious, and as mentioned before, cloud will eventually be the norm.

Written by: Prashant Thomas

Another one of those popular online tech debates that started over a year ago when PHP7 launched. PHP didn’t take much time to become one of the biggest assets for open source development. But PHP5 eventually got a rival in the form of HHVM (HipHop Virtual Machine), a virtual tool developed by Facebook that can execute PHP code far more effectively than other tools.

The contest took a turn when the latest version of PHP – PHP7 arrived. It outclassed its predecessor in many ways.

And so the showdown began. To come to a conclusion, we need to see what the contenders brought to the table.
 

HHVM

 
Developed by tech giant Facebook in 2010, and released in 2011, the main purpose of HHVM was to reduce server resources so as to deliver a better experience for Facebook users. It does just that by converting PHP code into machine code quickly and efficiently. However, there are merits and demerits that we need to consider.

Merits

  • Just in Time (JIT) compiler – the main reason how HHVM surpassed PHP5 in performance
  • Any developer can install and work with it
  • Doesn’t require much memory space to execute requests
  • Hack – an internally developed programming language that allows programmers to use static as well as dynamic typing. Considerably improves compilation speed.
  • Reliable community support for the developers to keep improving the tool.
  • Websites can run faster in most situations due to dynamic translation.

Demerits

  • Custom extensions should be converted prior to adding them
  • Does not support all WordPress plugins and themes
  • Designed for high-end machines, and will not work on 32 bit operating systems
  • Requires a lot of memory. The machine running it will need at least 2 GB RAM.
  • If Facebook ceases HHVM support, the large development community will soon disappear.

 

PHP7

 
PHP6 development took too long, and was riddled with many issues consequently giving it a bad reputation before its release. PHP6 eventually ended up in the trash, and was replaced by PHP7 that delivered a massive performance boost over PHP5.

Merits

  • Many new programming language features including new operators, return type hinting, uniform variable syntax etc.
  • Streamlined internal data handling made it almost 4 times more memory efficient than PHP5.6
  • Established communities that offer technical support and troubleshooting assistance.
  • Quicker response to requests with double the request handling limit compared to PHP5.6

Demerits

  • Lacks support for many PHP4 features
  • HHVM is better when it comes to certain performance metrics
  • Does not support some application plugins and themes
  • Not recommended for high-traffic websites

Now, let’s get ready to rumble.

You can find performance comparisons of the two all over the internet. But it probably won’t help you get to a conclusion. Both contenders definitely outperform the older PHP versions. However, in certain instances one is better than the other. The methodology should be the critical factor here when you are assessing benchmarks.

The way they interpret PHP code is fundamentally poles apart. PHP7 uses PHP interpreter to translate and execute PHP codes. HHVM converts PHP code to HipHop bytecode, which is then interpreted and optimized as machine code and executed.

Benchmark tests by Kinsta in WordPress showed HHVM processing and executing 624 requests per second while PHP7 managed to execute only 604 requests. However, PHP7 had a more distinct advantage in Drupal 8, evident from the benchmark test. PHP7 managed 37% more server requests per second than HHVM. [Source: Kinsta]

Tests on various CMSs including Magento 2 community edition, Pyro CMS etc. indicated that HHVM is a better performer than PHP7. PHP7 was faster in Laravel 5.1 though.

When it comes to reduced overall memory usage, PHP7 takes the prize. HHVM demands comparatively more memory, in turn constraining server selection. Nevertheless, HHVM WordPress websites still consumed fewer CPU resources. However PHP and HHVM showed evenly matched performance on site load time tests.
 

Conclusion and Verdict

 
If you have used PHP5, you will easily notice the performance improvements in PHP7. However, your choice will ultimately depend on your requirements and your capacity. For high traffic websites running on multi-core servers, HHVM is the right choice. If you are just looking for something significantly better than PHP5, PHP7 is the way to go.

Software development is at its best if it helps a lot of people or a huge community. Keeping that in mind, HHVM basically is a more selfish alternative. It’s not shared much for the community to use it the way they want to. PHP, on the other hand, is a tool that’s constantly being improved for everyone to use, and is a more generous alternative. Experts claim that the support PHP is getting now, and the small pieces of incremental enhancements should help PHP7 emerge the victor of this bout eventually in terms of performance.

Verdict: HHVM wins for now. But a future rematch will most likely have different results.

Written by: verbat

DevOps gained a lot of traction last year, with many companies deciding to adopt the increasingly popular software development methodology.

So what is it exactly?

As mentioned before, it’s simply a software development methodology that combines, like its name suggests, Development and Operations. What it does is basically integrate every software development operation from development to deployment and delivery.

The principle behind it is a close and effective collaboration between all the stakeholders who are part of the software development process. It’s just that the emphasis is on combining development and IT operations, which brings us to our subject.

DevOps is all about continuous development, continuous integration, and continuous delivery. This generally gives the users a wrong notion that DevOps culture reduce the need for testers. But that’s not the case. DevOps assures that the product delivered meets the requirements of the customers, and is of the best quality. That means, software testing will be contributing a lot more.
 

DevOps without Integrated Testing

 
Organizations that adopted DevOps did it to achieve smooth and seamless operation of a continuous delivery model. A DevOps environment that doesn’t count on what QA can do will ultimately fail to achieve that ‘smooth and seamless’ operation. If the developers take their time doing just the unit test to check the functions alone, and then pass the responsibilities over to the QA to continue, it clearly creates a rift between development and operations which in turn will hinder the progress to meeting continuous delivery goals.
 

Role of Testers in a DevOps Culture

 
A successful DevOps environment will have testers involved in every phase of the development process. The QA and development operations should be closely knit, i.e. they should operate in parallel. Testers should work with developers during coding itself instead of waiting for the developers to provide a coded product. The developers, on the other hand, will have to share early testing responsibilities with the tester while the QA team determines and acquires the most effective tools and technologies to ensure that early testing is performed with the least disruption.

This approach actually benefits if the team faces challenges and failures. The developers and the testers can work together to overcome the challenges and rectify the issues, while ensuring that the requirements of the customer have been met.

The testers basically:

  • Use automation to make their job a bit easier
  • Integrate development and QA operations to increase stability in the continuous delivery phase
  • Use automated tools for development infrastructure acquisition and provisioning
  • Discover defects and evaluate customer requirements

 

Continuous Testing

 
One of the major benefits of early involvement of testers is that they will be able to implement test scripts and determine test cases while the coding’s being done. Experienced testers can provide immediate feedback to developers on the defects identified during the development phase. In addition, they will also get an idea on the effects of their implementation choices on later stages of the delivery pipeline.

So to conclude, testing should be ubiquitous, as in ‘present’ or ‘integrated’ in all the central processes in a DevOps environment.

Written by: verbat

Kentico, an esteemed content management and digital experience platform provider, recently released the latest version of its popular ASP.NET CMS platform, Kentico 10, which is more than meets the eye. Karol Jarkovsky, Director of Product at Kentico, talked about the issues the new Kentico 10 can deal with, and what the future holds for the product, over a Skype interview with Laura Myers, a tech reporter of CMS-Connected.

The company is known for the research it does prior to developing and releasing products. According to the Director of Product, their research saw frustrated marketers, content creators, and developers as they are swept over by the sheer complexity of various CMS tools they have to use, while not getting the advertised benefits of those tools.

This was stated as one of the reasons they developed the latest Kentico version as an intuitive tool that solves aforementioned issue by properly aligning both marketers and developers, while allowing them to get their job done faster.
 

Pain points

 
Karol also explained three primary issues or pain points Kentico noticed in the market during its research, which were also considered while they developed a rooted solution in the form of Kentico 10.

  • Many organizations want to increase productivity but lack the necessary technology to do just that
  • CMS lacks the capability to deliver enough context for businesses to achieve their goals
  • CMS either doesn’t scale as needed or demands a price to do so

 

First pain point – Improving productivity

 
He further stated how the new Kentico addresses each pain point, and emphasized the importance of improving productivity. He explained with an example of how content authors spend about 10-15 minutes searching for the right image, and then spend more time optimizing it for various channels and layouts. Kentico 10 offers a solution for this in the form of responsive images management, which enables users to specifically predefine image variants. The system will only need a command from the user on the variants they want to be created, and the image will be automatically optimized accordingly before upload. This improves productivity, addressing the first pain point.
 

Second pain point – Context

 
Regarding context, Kentico pointed out that marketers struggle the most with three main issues.

  • Converting prospects into customers
  • Increasing existing customer value
  • Attaining an ROI through marketing

The success of marketing campaigns directly influence the chances of achieving these goals. But Kentico identified a workaround which involves tweaking the marketing campaigns. Marketers learn and improve with failures. However, the tools available don’t let marketers tweak the campaigns they are already running based on their new findings. They will have to conclude the campaign, and start a new one from scratch.

As a solution to this, Kentico added a campaign management tool in Kentico 10 which enables marketers to tweak running campaigns on the go, rather than ending it and starting all over again while losing data in the process. Karol also mentioned that they added something similar to an analytics tool to the Kentico 10 in the form of ‘campaign journey tracking’. This basically gives marketers an analysis of the running campaign, enabling them to identify the point in the campaign that got the highest visitor drop outs. This indicates the points of failure and the steps in the campaign that can be improved. Though the solution addresses the context pain point, it also aids in productivity enhancement.
 

Third pain point – Scalability

 
Data sets in organizations today are larger than ever. 53% of the data in these organizations are estimated to be left unanalyzed. 45% of the organizations surveyed were unable to analyze data across disparate sources, and 42% do not feel they can analyze the data enough to gain beneficial insights.

The data will only keep growing. Consider Internet of Things (IoT) as well, and we will have over 20 billion ‘connected devices’ in the world by 2020. This means there could be a great increase in data volume and data fragmentation. A tool that scales itself along with growing data can make a significant difference. Keeping scalability in mind, Kentico made sure that the latest release of its CMS tool is the most scalable version to date.
 

The Future of Kentico

 
Karol also spoke about the future of Kentico in the interview, and what they plan to do now that Kentico 10 is out. He revealed that they have already started working on Kentico 11 which will be featured as an improved ecommerce solution that focusses on integrations. As organizations generally go for reputed, standalone ecommerce solutions, Kentico plans to provide integrations with those popular B2B/B2C ecommerce solutions.

This would be beneficial particularly to organizations in the mid-market as they wouldn’t miss a stable, effective CMS solution that matches their ecommerce functionalities well. The Director of Product also revealed that Kentico plans to work with ecommerce market leaders to develop optimal solutions that deliver the best of both CMS and ecommerce. He added that they will be improving data visualization, and the marketing dashboards as well.

As Kentico’s Bronze Partner, Verbat looks forward to more innovative CMS solutions from Kentico that caters to the needs of the market and help organizations meet or exceed the high level of customer expectations.

Written by: verbat

Software engineering is an amalgamation of a number of concepts, designs and other factors. You explore a bit, start to understand things, and then you realize there’s more to it than what you just understood. But for now, let’s stick to exploring one unique component of software engineering – design patterns.

Basically, a design pattern is just a contextual reusable solution to a commonly occurring problem in software design. It can also be a template that explains ways to solve a problem, and applicable in many different situations in real-world application development, particularly in .NET development.
 

What design patterns can do

 
In a nutshell, a design pattern:

  • Hastens Software Development process by providing tested development paradigms
  • Helps prevent issues that are difficult to detect but can cause major problems
  • Improves code readability

In addition to this, design patterns can also help enhance flexibility. But when not used wisely, design patterns may degrade application performance while achieving that required flexibility.
 

Classification of design patterns

 
They were originally categorized into three:

  • Creational patterns
  • Structural patterns
  • Behavioral patterns

Another classification was introduced later which proposed the idea of applying design patterns at the architecture level of a software. Model-View-Controller (MVC) pattern is an example.
 

Creational patterns

 
In this part of the blog series, let’s get into the details of the first category – Creational patterns.

They primarily deal with creating objects that are necessary for a particular scenario. They streamline object creation, thereby reducing the likelihood of certain design problems.

They are further classified into Class-creational patterns and Object-creational patterns. Class-creational patterns, like the name suggests, deals with class instances while the latter deals with object creation.

5 of the most popular creational patterns include:

  • Abstract factory pattern
  • Factory method pattern
  • Builder pattern
  • Prototype pattern
  • Singleton pattern

Here’s a brief summary of each pattern and the purpose they serve.
 

Abstract factory pattern

 
This design patterns provides various ways to capsulize a group of factory objects without specifying their concrete classes. The client software normally creates an abstract factory implementation first, and then uses the generic interface to create concrete objects that are part of the theme without knowing the objects that are created from each factory.

The merit is that the pattern allows interchanging the implementations during runtime. They don’t have to change the code for that either. However, the system can become difficult to debug if the levels of abstraction passes a certain limit.

Abstract Factory Pattern

 

Factory method pattern

 
Problems arise when objects are created without specifying their class. A design pattern used in class-based programming, factory method pattern uses factory methods to deal with those problems. For this, the pattern creates objects without using constructors by using a factory method.

The objects will either be implemented by child classes after it’s specified in an interface, or implemented in a base class. They can also be overridden by derived classes if necessary. Its reliance on inheritance is quite clear from the way it works, and it doesn’t require initialization. Like abstract factory pattern, the factory method pattern also enables polymorphism. A good example is ‘javax.xml.parsers’ package, which features a lot of factories.
 

Builder pattern

 
To understand Builder pattern, you should know what a telescoping constructor anti-pattern is. When object constructor parameter combinations are increased, the result is a long list of constructors. This is where the telescoping constructor anti-pattern occurs. Builder pattern is meant to find a solution for this, by using a builder. The builder receives each initialization parameters step by step, to return a constructed object. It can also be used for objects that contain flat data (those that can’t be edited easily), and for encapsulating construction and representation codes. The only disadvantage is that the pattern needs a separate ConcreteBuilder for each type of product.
 

Protoype pattern

 
When a prototypical instance is used to determine the type of the objects that are to be created, the prototype pattern is used. The objects created can be cloned to generate new objects. The pattern helps avoid subclasses of an object creator, just like an abstract factory pattern.

In order to implement the prototype pattern, an abstract base class is necessary. This base class should specify a pure virtual clone() method. The client calls the clone() method on the prototype instead of invoking a new operator on some class name. Then a factory method with a parameter is called (that which designates the desired derived class) or invoke the clone() method provided by another pattern.

Unlike factory method pattern, the prototype requires initialization but doesn’t require subclassing.
 

Singleton pattern

 
This pattern primarily serves the purpose of restricting the instantiation of a class to a single object. Singleton pattern is ideal when only one object is required to harmonize actions across the system. What makes singleton patterns unique is the fact they are used by other patterns like abstract factory, prototype, and builder in their implementation. State objects are also often categorized as singletons.

Singleton patterns are often preferred to global variables as well. This is because they permit lazy allocation and initialization, whereas global variables almost always use up a lot of resources.

Written by: Prashant Thomas
Page 10 of 11« First...891011