Author Archives: krcmic.com

The internal search goldmine

The internal search goldmine

Having an internal search isn’t just a service for visitors. For owners of websites, it’s a gold vein full of information, ready to be mined and panned by you. When you find out WHAT people are looking for, WHERE they look for it and HOW they describe what they want (by keywords!), we are poised to conclude WHY they’re searching and accommodate them and their needs.

In the previous article Why internal search, I hope I proved enough that implementing internal search pays off. The possibilities of monitoring searched keywords and phrases are many. Below I will mention information that can be obtained by keeping track of the “Site Search” in Google Analytics*.

1. What kind of information are visitors looking for

Since you somehow forgot to mention it, they may ask something about what you do or what you know. Or the necessary information is somewhere on the site, but just “very well” hidden. We found out an interesting example – on one specific website, people are looking for a map, though it is linked to directly from the main homepage. Probably the link isn’t as obvious or it’s just placed incorrectly. Sometimes they ask for a service (or product) that you don’t provide, but people expect it from you for some reason. But how else could we find this out?

The conclusions are obvious: add content for the overlooked and show off the hidden. For the services and products not provided, it’s better to decide whether it’s worth it to begin providing them or not. If not, the site is better off honestly saying that you don’t provide these services and save the hassle.

2. What words are visitors using

What is great about full-text search is that visitors talk “to us” in their language, using their words. Statistics nail down synonyms – how many times is the word jobemployment or career mentioned? How often do they use office hoursworking hours or opening hours? With this we can reveal that visitors are saying something completely different than we are, and perhaps that’s the reason they can’t find what they’re looking for.

For example, on a website of a travel agency, one of the most popular key phrases is “Holiday with children”. Although there’s a subpage with appropriate content on that site, it is entitled “For families with children”. As you can see, visitors themselves don’t use the word “family”. Including this section under “Thematic holidays” was also probably not the best idea and hence didn’t help the visitors finding it easily.

Search terms can be used when naming / renaming menu items. The number of searched words should be taken into consideration when analyzing keywords and creating content (along with the search terms thanks to which the users visited the website). This is a valuable resource mainly for copywriters and SEO specialists.

3. What search engines are visitors using

Google Analytics also shows which search engines are being used. If we continue as usual and the most frequent search from the main page, we can see where our visitors often get caught up “in the shallows” and need help. It’s better to revise the subpages, maybe even edit them. The best part is that we see which words are searched from specific pages. This turns out to be a great guideline on how to modify the site! Take the travel agency website for example – users that visited “Holiday for Seniors” are looking for “golf” on this subpage. Perhaps the agency should mention golf courses or at least add a visible link.

Other uses

We can learn more using many other interesting statistics, such as the percentage of visitors who better clarify their previous queries, how many pages they visit after searching, etc. However, if you can benefit from at least these three gold veins (what they’re looking for, what they say and from where to they come from), you will not only improve your website, but also its results.


* Tracking internal search (Site Search) isn’t automatically enabled in Google Analytics and needs to be set manually in the profile. Although it’s relatively simple, a surprising number of sites don’t have this feature enabled.

Why internal search?

Why internal search?

Is full-text searching on your own website useless, or an obligation or is it just a helping hand for your visitors? Or is it a goldmine of opportunity with grains of precious information about your visitors and even the website itself?

On each page we should provide a search box within the site. Internal search is being used by approx. 4% of visitors, on corporate and specialized sites it’s used by an average of 3-7%, news portals use within 2%*. At first glance it may seem insignificant, but when each 15th-50th visitor shows us what he wanted, we get a pretty decent representative sample. By helping so many people finding what they need, it’s certainly worth it.

Three reasons for implementing internal search are these…

The notorious searcher

Some visitors commonly go through websites by searching necessary words. To put it simply – they decided that studying the site map structure and how the information is laid out is just a waste of time. They immediately avoid it by directly searching for the piece of information they’re looking for. These people can get disappointed by not allowing them to search and therefore they just might leave the site straight away.

The desperate seeker

The site’s structure is usually very clear to its creator, but rarely for the visitor. Therefore, while visitors click through the page and if they don’t find what they need (in time, afterwards they lose their patience), they use the internal search. For some it may be the last desperate attempt for getting the piece of information for which they visited the site in the first place. For the owner of the website, this is still better than losing the visitor completely.

The goldmine of data

The third reason being the unique opportunity of confessing the visitors. If we observe what and where are people searching on the site, we have a perfect survey, then and there and for free, too! After all, they tell us in their own words what they want, what they can’t find and their needs and expectations as well. Thus, these golden grains you found can be exchanged by precious data, although of course you have to be willing to work further with them. If so, stay tuned – we’ll be talking about “smelting” data in our next article The internal search goldmine.


* The percentage values were obtained and averaged from a sample of larger-scale websites and portals which have a number of monthly searches over 500.

What are the best Microsoft Excel alternatives?

Microsoft Excel is the most important spreadsheet software with more than a billion clients. It is used for creating outlines, tables, reports, pattern recognition, organizing information, etc. Although it accompanies some great capabilities that increase efficiency, it has its specific drawbacks. It is very expensive and is not available on all platforms. In addition, it doesn’t have reliable coordinated effort and synchronization components and additionally needs numerous customization options.

Fortunately, Microsoft Excel does not appear to be the only worksheet creation facility available in the corporate sector. There are several other Office suites with Excel options available for free and paid, which can be a worthy replacement for Microsoft Excel in certain circumstances. This article discusses 5 such alternatives to Microsoft Excel that will allow you to create worksheets and always have an overview of your spreadsheet data.

Google Sheets

Google Sheets can be an exceptional free online version of Excel because it contains comparable components with included features. Google Sheets is a software spreadsheet that has all the components comparable to Excel. In addition to what Excel can offer, Google Sheets offers an extraordinary facility for collaborative endeavours, distributed storage, and ongoing information sharing.

Different individuals can change the sheet in the meantime and all the information will be continuously saved and compared. All information will be shared on Google Drive, which can be accessed from any device anywhere. In addition, you can also use Google scripts to create spreadsheets. They work as plugins that give you the ability to include additional sidebars, change the menu, add dialogue boxes and other similar features. You can even create your own specific scripts to suit your needs. Also, Google Sheets gives you the ability to open, modify, and save Excel documents using the Chrome extension.

Still, you must keep in mind that Google Sheets is still a web application, so it will require more resources to function well.

Advantages of Google Sheets

  • It’s free
  • Requires minimal training
  • Spreadsheets are customizable
  • It’s easy to collaborate with colleagues
  • Disadvantages of Google Sheets

  • Spreadsheets are not very secure
  • It’s difficult to know who edited the spreadsheet
  • Google Sheets price

    Google Sheets is a free tool that doesn’t require any payment.

    Apple Numbers

    In case you are an iOS or Macintosh OS X client, you should choose Numbers and not Microsoft Excel. Numbers is the default spreadsheet tool on Apple devices, which is completely free at the moment. Unlike Google Sheets, which will make you feel at home, in case you are still an Excel client, Numbers has a completely different methodology and interface.

    There are no lines and segments when you create a sheet, rather you are given different formats to browse (created by Apple itself). You can create stunning outlines and tables for your every need.

    With its inherent formats and ability to do whatever you like, this device is ideal for both students and power clients.

    Advantages of Apple Numbers

  • It’s free
  • Easy to use
  • Apple Numbers have plenty of great templates
  • Disadvantages of Apple Numbers

  • Different to Microsoft Excel, so it may be a bit confusing at first
  • Numbers price

    Apple Numbers is free software that requires no payment.

    Microsoft Excel Online

    If you’re really looking for a duplicate of Microsoft Excel, then an incredible option could be Microsoft Office online. This is a Microsoft Office suite that is only available online with a minor expansion of components and does not have some of the force client elements of the desktop application, such as macros, mail union, Group Painter, shading, fringe and bar and so on.

    It offers above-average apparatuses for coordinated endeavours (maybe not equal to Google Sheets) and saves all archives to OneDrive or Dropbox. Spring and pairing are continuous, and you also get a few included polling devices.

    The main drawback is that it has no option to disconnect from the network. In case you don’t have access to the web, the app is practically useless. Since it is online, amassing huge information can cause lapses and frustration.

    Advantages of Microsoft Excel Online

  • It’s free
  • Familiar user interface
  • The file format is supported by Microsoft Excel
  • Great collaboration thanks to the cloud-based approach
  • Disadvantages of Microsoft Excel Online

  • Exclusively Internet-dependent
  • Lacks many features that Microsoft Excel has
  • Microsoft Excel Online price

    Microsoft Excel Online is a free tool that requires no additional payment.

    Zoho Sheets

    Zoho Sheets is another office suite that offers a different variant of Excel. The suite is not as rich if we compare it directly with Microsoft Excel, yet it has some special components.

    It has some powerful arrangement of collaboration tools; it saves and assigns sheets to Zoho’s distributed storage. Still, it has a free form, but it is limited. In free form, you get all the required elements along with 1 GB of capacity. In case you need more space and some additional security and collaboration flexibility, you will have to pay.

    Advantages of Zoho Sheets

  • Easy to use
  • Highly customizable
  • Data are easily shared
  • Disadvantages of Zoho Sheets

  • Limited storage capacity for a free version
  • Zoho Sheets price

    Zoho Sheets has a free version and offers a trial for the premium version. For detailed pricing information, Zoho needs to be contacted.

    Smartsheet

    Smartsheet is an amazing online alternative for Excel with organization features. Either way, like Excel, it is not a free tool. You simply get a 30-day trial and after that, you have to pay for a monthly or yearly prerequisite. Smartsheet can do virtually everything that Excel can do but includes some additional control and customization options.

    As with Apple’s Numbers, you start with an overview report and can use the format to get started. The facility can be a little difficult for some amateur clients, however, there are tips and video tutorials in the software. You can recreate lines and sections with full control over their visual appearance without much difficulty.

    Some of its notable components include Gantt’s perspective and schedule perspective, linking calls and task records, scheduling and custom reports.

    Advantages of Smartsheet

  • Easy to use
  • Great for project management
  • Disadvantages of Smartsheet

  • More expensive than the competition
  • Doesn’t offer time tracking
  • Smartsheet price

    Smartsheet offers a free trial version. After that, you have two options. The Pro plan costs you 7 USD a month and offers unlimited sheets, unlimited viewers, up to 10 editors on a single sheet (but all of those editors have to have a paid licence), 20 GB storage and can be integrated within Microsoft 365, Teams, Google Workspace or Dropbox. The Business plan costs you 25 USD a month, and in addition to the features of the Pro plan, the Business plan has 1 TB of storage, unlimited automation, can be integrated with Adobe Creative Cloud and much more.

    11 Online Business Laws You Should Follow

    11 Online Business Laws You Should Follow

    The early days of e-commerce were reminiscent of the Wild West. It was uncharted territory and everyone was doing everything they could to cash in on the madness. Not surprisingly, e-commerce laws were quickly introduced to protect all participants in an e-commerce transaction. After all, this was no mania; e-commerce sales are expected to surpass purchases in brick-and-mortar stores in just three years!

    What is e-commerce law?

    E-commerce law is a set of legal issues that affect the online retail industry. Every type of e-commerce company, like other businesses, must comply with certain laws and regulations, and failure to do so can result in legal problems and lawsuits.

    While e-commerce retail giants like Amazon and Walmart, and service-oriented retail companies like Uber and Lyft, undoubtedly have an army of e-commerce lawyers ready to tackle any challenge, it’s not as easy for small and medium-sized e-commerce businesses due to budget constraints. So let’s take a look at some of the online business regulations that you as a commerce entrepreneur need to know.

    11 e-commerce laws that every business needs to know

    All e-commerce entrepreneurs need to consult with an attorney who is knowledgeable about e-commerce laws, as well as an insurance agent, to protect themselves and their businesses. In the meantime, we have tried to outline the laws and regulations that you need to be familiar with and ask an expert about.

    Establishment of a business entity

    Forming a limited liability company (LLC) is one of the most important things an e-commerce business can do for itself. When you form an LLC, you are creating a new business entity that is legally separate from its owners. This protects the owners’ assets from being used to pay liabilities to creditors in the event the company runs into financial trouble.

    So if the LLC is unable to pay its debts, the LLC’s creditors can go after its bank account and other assets. However, the owner’s assets, such as their homes, vehicles, and bank accounts, cannot be affected. The LLC owner risks only the amount he or she invested in the business. As with anything, there may be exceptions, so it’s best to consult with an attorney who specializes in e-commerce law.

    If you want to learn how to start an LLC, you can use this website: www.myusacorporation.com

    Paying taxes

    “Nothing is certain but death and taxes,” Benjamin Franklin once said. So e-commerce entrepreneurs must apply for a tax identification number and determine if they qualify for sales tax exemptions and resale certificates. It’s important to remember that every state and every country has different expectations and standards when it comes to taxes, so it’s critical to research your target market.

    For example, if the majority of your customers are in the U.S., you’ll likely want to list your process pre-tax, as is common in the states. However, if your target market is Australia, where customers are used to seeing after-tax prices, you’ll want to include the tax in the displayed price.

    Other e-commerce tax laws depend on what you’re selling and from where. Here are just a few examples:
    If you sell clothing from Washington, the clothing is taxed in your state.
    Value-added tax (VAT) applies to all unwanted goods in the UK.
    Goods sold in plastic bottles in California are subject to a $0.11 recycling fee and other taxes.
    This is just one of the many reasons why consulting a tax professional can benefit your e-commerce business.

    Choice of payment gateway

    How do you want to get paid after the sale? There are many payment gateways, but not all are the same. Here are some considerations when choosing a payment gateway:

    Is it hosted or non-hosted?
    Is it equipped with anti-fraud features?
    Are there any product restrictions?
    Are there transaction, termination, monthly, or setup fees?
    How do they handle payment processing issues, chargebacks, and holds?

    There are three standard payment gateways

    On-site payments. Large businesses typically use on-site payments that are processed on their own servers, where checkout and payment processing is done through your system.

    Checkout site, payments off site. With this method, the front checkout is done on your site, but payment processing is done through the back end of the gateway.
    Similar to redirected payment gateways, this method can simplify payment processes while providing more security on the back end.

    Redirects. Redirects often include options for alternative payment methods, for example, the company allows the use of PayPal. If the gateway takes the customer to a PayPal payment page where the entire transaction is processed, it becomes a redirect.

    Use of trademarks, patents, and copyrights

    Although these words are sometimes used interchangeably, they are all very different. Here is our definition of all three of them.

    What is a trademark?

    A trademark is a type of intellectual property that consists of a recognizable sign, design, or expression that identifies products or services from a particular source and distinguishes them from others. The owner of a trademark may be a natural person, a commercial organization, or any legal entity. The trademark may be placed on the packaging, label, voucher, or on the product itself. Trademarks used to identify services are sometimes called service marks. ™ and ® are symbols usually indicating a trademark.

    What is a patent?

    This is a type of intellectual property that gives its owner the legal right to exclude others from making, using, or selling the invention for a limited period of time in exchange for disclosure enabling the invention to be made public. In most countries, patent rights fall under private law and the patent owner must sue someone who infringes the patent to enforce his or her rights. In some industries, patents are an essential form of competitive advantage, in others they are irrelevant.

    What is a copyright?

    Copyright is a type of intellectual property that gives its owner the exclusive right to copy, distribute, modify, display and perform creative work, usually for a limited period of time. The creative work may be literary, artistic, educational, or musical. Copyright is intended to protect the original expression of an idea in the form of creative work, but not the idea itself. Copyright is subject to limitations based on public interest considerations, such as the fair use doctrine in the United States.

    Depending on the product or service you sell, you may be able to claim one or all of these protections. While not required, most e-commerce businesses will want to protect and control their intellectual property rights online. Even if you don’t do so, you should at least check to make sure you’re not infringing on other companies’ patents or trademarks; for example, if you sell unlicensed Mickey Mouse cell phone cases, you’re likely to get in hot water with Disney. This is something you can check online – for example on the Justia website.

    Understanding transport restrictions

    What are you transporting? Some items are restricted from shipping, while others are restricted by only certain carriers (so if UPS doesn’t ship your product, check FedEx or vice versa). Most carriers notify you of restricted items online. The most commonly restricted products include aerosols, perfumes, animals, fruit and vegetables, cigarettes, nail polish, or living plants.

    Stock sizing

    You may be content with transporting products that are stored in the garage or attic. However, your business could end up being too big to legally run from your home! If you’re going to be storing a significant amount of stock, you’ll need to check your lease, property transfer agreement, or zoning regulations to see if there are any restrictions on running an e-commerce business from your home.

    Of course, don’t panic – you don’t have to close the business. Instead, look into renting warehouse space or working with a third-party logistics company (3PL). By offloading warehousing and order fulfilment, you’ll reclaim your space and gain access to our technology and order fulfilment experts. You’ll also save money because we ship through fewer shipping zones and have negotiated rates with carriers.

    Understanding age restrictions

    All websites, without exception, must comply with the Children’s Online Privacy Protection Act (COPPA). The regulation, which will most likely affect your e-commerce business, states that you may not collect any personal information from children under the age of 13.

    If your product is tailored to children, you’ll need to research the COPPA regulations in more detail.
    If your product is designed for adults, you will need to check your country’s specific regulations and follow age verification procedures.

    Getting business insurance

    To protect yourself and your business from liability, you’ll want small business insurance. We recommend talking to a small business insurance provider to find out which insurance would be best for your business, product, and location. Some of the insurance options you may want to consider include:

    General liability insurance helps cover the cost of responding to a claim where your business has caused property damage or bodily injury.
    Product liability is a must-have for high-risk products such as CBD, vapes, or medical devices.
    Professional liability protects your business from errors, mistakes, and negligence.
    Commercial liability protects your business from financial loss if you are held liable for property damage or personal and advertising injury caused by your services, business, or your employees.

    Licenses and permits

    Does your business need a license or permit? While most online businesses don’t need them, yours may, depending on where you’re located, what you’re selling, and the laws about selling in that state or country. Legal Zoom is a great resource for information on e-commerce licensing and permitting regulations.

    PCI Compliance

    The Payment Card Industry Data Security Standard (PCI DSS) was created in 2006 by leaders of Visa, MasterCard, American Express, Discover, and JCB to protect all parties involved in payment transactions. Although PCI compliance is not a legal requirement, failure to follow PCI protocols can get e-commerce retailers into legal trouble. How?

    Let’s say your business suffers a data breach and a subsequent investigation reveals that your processes were not PCI compliant. Then, you could be subject to thousands of dollars in fines and fees from the government and credit card issuers, and you could face lawsuits and insurance claims for non-compliance with PCI standards. This can cost you money, customers, and ultimately your business.

    Compliance with FTC regulations

    Are you planning to market or advertise your product or business online? Then the Federal Trade Commission (FTC) wants to talk to you! There are a number of rules you must follow to stay in compliance with the FTC. For example:

    Will you send emails to customers? The FTC CAN-SPAM Act established requirements for commercial communications and gives recipients the right to request that you stop sending them emails. Failure to do so can result in severe penalties for violations.
    Do you allow online reviews? The FTC’s Consumer Review Fairness Act protects consumers’ ability to share their honest opinions about products, services, or business conduct in any forum – and that includes social media.
    Are you using deceptive marketing practices? Anything from false claims to fake reviews can get you in trouble with the FTC.
    These are just some of the provisions you should know about. For more information, visit the FTC website www.ftc.gov

     

     

    5 reasons for having a mobile application

    5 reasons for having a mobile application

    Do you also ask what else you can do for your business, how to maximize profit and not to lose clients? Have you already got an idea to make a mobile application for these purposes but you are still not sure whether it is a step in the right direction? The following 5 reasons will make your decision-making easier.

    1. Get a new business channel and be seen more

    Mobile devices are on the increase, smartphones replace “dumb” phones very fast, and although the number of tablets does not increase much these days (due to the highly saturated market), phablets do much better and smart watches are also likely to be successful in the future. We have all those smart gadgets with us mostly all day long and use them intensively. An average European spends more than two hours a day on its mobile darling! Mobile applications take the largest proportion of that time.

    Source: Flurry analytics, ComScore, NetMarketShare

    Be seen!

    As a matter of course, users most often use only a few favourite applications. However, this does not change the fact that they must unlock the device and find the application on one of the screens of the system or in the list in order to use the application. At that moment the icon of your application with a perfect graphic design catches their eyes.

    Willy-nilly, the user notices it, even though subconsciously, and keeps the information about it. The subconscious human mind notices every image and text it comes across, which is an advantage for your business. Even if your application is not in the top ten list and is used by your clients only sporadically, you will impress yourselves on their mind more and more every day.

    Take the advantage  be always close to your clients, they will remember you at the right time.

    And what about your business brand?

    Are your customers able to identify you among the other companies in the branch? If you integrate the brand sensitively into the design of the application, you will fulfil its potential even a bit more and earn plus points as compared to your competitors. Keep in mind that to really remember a “new” business brand, you must see it about 20 times. The more you are seen by the clients, the closer you are to making a deal.

    2. Your customers like mobile applications. Let them have it!

    The use of mobile applications is very comfortable for the users of mobile devices. They can get instantly to their favourite functions and contents and in many cases they even do not need to be online. Easier satisfaction of everyday needs, such as buying a public transport ticket, using a mobile library or audio library, instant sharing of interesting matters in social networks, etc. results in a much more time of using your services, which leads to higher sales.

    If you do not have a mobile application but the competitors do, you are giving your clients a reason why to use their services and not yours. 

    Give your clients an opportunity to have within their reach what they want or need, and strengthen their loyalty this way. 

    A rather old but still valid Google research shows that as early as in 2011 the users could be divided into three major groups, depending on the manner how they used mobile devices:

    • I want to find out something quickly –  9 of 10 persons in the first group took an action after finding the information in the browser and a half of those actions led to a purchase
    • I am looking for a store / service / establishment nearbythe second group largely mingles with the first one but the main difference is that if they find some local information, 88 percent of them take some action afterwards (make a call / visit the store, etc.) within a day
    • I want to buy something – 27 percent of all purchases took place through mobile pages and as many as 22 percent through a mobile application

    A nice summary of the information obtained in the research is available on the website SearchEngineLand.

    As it follows from the survey, a large proportion of a mobile device use concerns the information that leads, either directly or indirectly, to an order. Not having a mobile application means that you lose your market share voluntarily.

    3. Increase your profit and win new customers

    With a quality application you can also win new customers or poach them from your competitors. Here is a practical example: In the past we were contacted by a bus carrier facing an unpleasant situation when it did not manage to poach clients from competitors even after investing into the fleet and even by the lower fares. On the contrary, the internal statistics (after removing season variations, etc.) showed a clearly visible trend of a decreasing number of clients.

    When analysing the types of clients and their behaviour in the course of booking, we found out that a substantial number of the lost ones changed the booked time several times during the day.

    They mostly did so twice but 30 percent of them did so even several times during the day. This led us to the assumption that those people did not have a strictly given time of departure and planned their journey according to the current needs arising during the day. Afterwards we guessed where they might change the booking because they were not likely to have a desktop with Internet connection at their disposal all the time. 

    The solution how to win them back was, as a matter of course, a mobile application that made it possible for them to monitor the bookings, change them, cancel them and add new ones. Together with improving the booking process for a desktop (UX revision) we achieved an increase in the number of regular customers by as many as 25 percent!

    4. Be ahead of your competitors

    A majority of large companies operating in any branch in the market have already had a mobile application or are getting it done but mobile applications are rather rare among medium-sized and small businesses. And this is where you can draw away from the competitors, win recognition of your clients, a major part of which will certainly be thrilled by your mobile application, and get the credit among experts. Moreover, you will throw down the glove to your competitors that will begin to emulate you at once.

    However, not all competitors realize that making a quality application requires a lot of designing work in respect of its functions, processes and look.

    And they also do not realize that a perfect analysis of clients needs and a novel method of their satisfaction form the absolutely necessary basis. So you do not have to be afraid much that you lose the advantage over your competitors fast  on the contrary, due to new information obtained from the operation of the application and its continuous improvement and extension you will keep on top. 

    What matters is to begin as soon as possible and not to rest on laurels.

    Increase the involvement of your customers

    The more you are seen and the more communication channels you occupy and the higher utility value you offer to your customers, the more they will like you and will not tend to use the services of competitors or to make their purchases elsewhere. 

    5. Address your customers directly

    Do you know that with the function push notification you can address your customers e.g. when they appear not far from your brick-and-mortar store or when you have a convenient campaign for them, no matter whether they are using your mobile application at the moment?

    Practical example: You have the mobile application of your favourite restaurant installed. Through the application you can book a table for a particular time, order a home delivery, etc. One day you pass by that restaurant and it happens that you mobile receives the message: “Come to our afternoon barbecue! We have a free drink for you as our loyal customer 🙂. Do you think it is exaggerated? It is not, this is exactly the way how you can fantastically promote virtually anything. Just beware of the frequency of bombarding your clients this way with various messages and their relevance.

    As an entrepreneur you must remember that the main objective of a mobile application is to solve a real problem. So not any ground-breaking ideas, which is something a start-up enthusiast may dare to use, but only hard data, statistics and their reasonable analysis will give you the answer to the question how the mobile application should look like.

    And, of course, the selection of a skilful and quality team matters as well. Good luck!

    5 reasons why your A/B test does not work

    5 reasons why your A/B test does not work

    Web is important for you as a sales channel so you follow conversions and figure out ways to improve them. In this case you or your agency certainly are familiar with the concept of an A/B test. And if you are not, you certainly should be. A/B test is a very useful thing, irreplaceable in the process of improving conversions. You generate hypotheses, verify them and if they work, deploy them on the web. And the numbers will go up.

    So much for theory. In practice, of course, it does not work so easily. Especially if you are waiting for the test result, but none is coming, or it comes but is not of much help in your decision-making. “What’s wrong?” you ask. The answer will not please you, but probably it is you who is wrong. Because you are doing one of the things that you should avoid when doing an A/B test.

    1. Testing without a hypothesis

    “Instead of the blue button, let’s use the green button and we’ll see.” Such assignment for the A/B test is not so unusual, and, as in many other cases, should be followed by a question: “Why?” Try to ask this yourself whenever you devise a similar change on the web. Why should the green button be better than the blue one.

    The explanation should take into account the user, who does not care if green is your favorite color. What we need is a hypothesis. “The page contains various elements of blue and green color contrasts with them more than blue,” you say. “Green is the color of positive people and evokes forward motion like a traffic light,” says a colleague with psychological talents. Both hypotheses are correct. They may not be one hundred percent, but you need to have a rationale for them and elementary knowledge of user behavior. The A/B test is here to make your hypothesis confirmed or refuted.

    Without a hypothesis, testing is like throwing darts at the target. You may hit something, but primarily the result is mere play of chance. If we put it in the context of the button color testing, comparing blue and another randomly selected color from a reasonable palette (light gray button on a white background cannot be called a reasonable option) will give you the same random outcome as when testing the same blue button twice.

    2. Comparing more than one thing

    Let’s return to the blue button. Does color change help the conversion? We have a hypothesis which claims it does. It might also help if we removed a paragraph of text above the form. We have a good hypothesis for this too. As well as for a change of the title size, removing an item from the form or three more things on the page. Let’s test it all, ideally at the same time. After a week we find out that a new variant is less a conversion than the original.

    You can probably guess what the problem is. It is that the test detects whether the hypothesis is correct or not. But I cannot say which one. Testing multiple changes at once is problematic in that the changes interact with each other. One incorrect change decreases the conversion rate of the whole variant, even though other changes do improve the conversion rate.

    3. A campaign running during the test

    Campaigns are a great way to create awareness of the actual service or product and increase web traffic and conversion rate. However, hand in hand with that also comes a mostly negative and significant effect on the statistics. And also on the A/B test. Why is this so?

    Campaigns bring many people to the web coming in order to get your product or deciding to acquire it during the visit. But they also bring a large group of people who are only interested in advertising but have no real interest in the product or service. These people either leave the site immediately, click through it, or even start the conversion process and quit in the middle of it. In the web the conversion quantity vs web traffic rate drops, which significantly affects the test as both variants have so low conversion rate that it minimizes the difference between them and it is difficult to select the winning option.

    4. The conversion rate is too low

    It is linked to the previous point, but it manifests itself even if you do not run a campaign or another active traffic source. It’s a bit like a vicious circle. You want to increase conversions, but the A/B test takes too long because both variants have very low conversion rate. What to do in such a moment? Consider whether it makes sense to take the test or if similar minor modifications have a chance to improve conversions. The real problem may be in the product, in the form you provide it, or an unsuitable traffic source. It should be noted that the A/B test is not a universal savior. When you need to fix a wrecked car, painting is not enough.

    5. Dependent testing

    Rather than an error it is a downside of the A/B testing. The result of one can affect the other, and finally you might get a better variant than was the original one, but it may not be the best possible variant. Actually, you will lose the best one during the testing.

    Imagine that you are testing the blue and green button. The result is that the green button provides higher conversion rate. Then you come up with a hypothesis that text B could work better, for some reason, than the original text A. You make a new test and find out that the hypothesis was correct and text B is better for the conversion rate.

    Did you really get the best option? Maybe not. What if text B could work even better in the original blue button? This question should be asked even before the first test and we should use a multivariate testing. We do not test two but four variants against each other: Blue button with text A, blue button with text B, green button with text A and green button with text B. This test will obviously take longer, but the result is the best possible variant of the button.

    How to avoid mistakes like this?

    You do not need to be versed in the statistics, but need a thorough knowledge of the process by which A/B test works. It is important to make more long-term planning and always base the test on realistic assumptions. The ideal is to use the services of a web integrator who has experience with testing and who can provide not only a dry result but can also analyze why the result is what it is. Then the A/B testing will be a real benefit for you.

    World Heart Day

    World Heart Day — 29th September, 2022

    Heart disease, which includes cardiac arrest and stroke, claims 18.6 million lives a year. World Heart Day, on 29 September, aims to raise awareness of how to prevent these diseases.

    Why is World Heart Day named so?

    World Heart Day is aptly named. On this day, we are to focus on the health of our hearts. World Heart Day has a different theme each year, but they are all about taking care of your health. Each year, World Heart Day motivates people to lead healthier lifestyles, be active, eat healthier and adopt healthier habits.

    When is World Heart Day 2022?

    World Heart Day is held every year on 29 September. This year, in 2022, the date falls on a Thursday. This important day is a reminder to take care of your heart, for example by playing sports or abstaining from alcohol and tobacco products.

    What is the theme of World Heart Day 2022?

    This year’s theme for World Heart Day 2022 is use a heart for every heart.

    Use Heart means to think differently. Make the right choices. Act with courage. Help others. Engage in this important cause. The heart is the only organ you can hear and feel. It is the first and last sign of life. It is one of the few things that has the potential to unite us all as humans.

    For Every Heart includes the use of the word “FOR” and shifts the focus from the actions themselves to the recipients of the actions, allowing the campaign to have a wider appeal while making it more personal. We want the World Heart Day message to reach as many individuals as possible to help achieve cardiovascular health for every heart.

    History of World Heart Day

    World Heart Day is commemorated and celebrated annually on 29 September to raise awareness of the cardiovascular disease and how to control it to reduce its global impact. This international holiday was declared by the World Heart Federation in collaboration with the World Health Organization. Antoni Bayés de Luna, President of the World Heart Federation from 1997-1999, came up with the idea. It was first celebrated annually on 24 September 2000 and until 2011, World Heart Day was commemorated on the last Sunday in September.

    Cardiovascular disease (CVD) is the leading cause of death worldwide. An estimated 17 million people die from CVD each year. The leading causes of these deaths are coronary heart disease or stroke. A common misconception about CVD is that it affects more people in developed countries who depend more on technology and lead sedentary lifestyles. However, more than 80% of deaths occur in middle- and low-income countries. Fortunately, the leading causes of cardiovascular disease are modifiable factors, including lack of exercise, smoking and poor diet. Cardiovascular disease also has a major impact on countries’ economic systems – the cost of treatment is high and failure to treat the disease early leads to loss of productivity and long absences from work.

    More than 90 countries participate in this international event each year. World Heart Day has thus proved to be an effective means of disseminating information on cardiovascular disease. The high level of involvement of governments and organisations is most important for developing countries, which are heavily affected by these diseases.

    How to celebrate World Heart Day?

    We recommend using this day to take care of your own health. Use World Heart Day to check your own heart – you might even find an event near you to learn more about your heart health and ways to be even healthier.

    It’s also a good idea to use this day to become aware of the uniqueness of your body. We are born with one and we will live our entire lives with the same one, so it’s important to take good care of it. Let’s use this day to understand what is really important and try to make small resolutions to be more physically active and eat healthier. But everything in moderation – a drastic lifestyle change could have exactly the opposite effect on your health, both physical and mental!

    World Heart Day is not just about our hearts, but about the hearts of those around us. Use this day to educate yourself on how to help people in need. Look for classes that teach you to notice the signs of poor health or classes that teach you how to perform CPR.

    Why is World Heart Day important?

    World Heart Day is important for several reasons.

    • It’s for all our hearts. The theme of this year’s World Heart Day is taking care of our own hearts and the hearts of our loved ones. What can I do for my heart and for your heart?
    • It is a reminder of the importance of taking care of the heart. World Heart Day is a universal platform that has the ability to target the millions of people who succumb to cardiovascular disease each year. Many events and lectures fall on this day to raise awareness about the disease and its prevention.
    • It inspires action. On this day, there are many fun and healthy activities – walks, runs, lectures, performances and so on – that can inspire you to fight cardiovascular disease in order to live a longer, happier and healthier life.

    Where to follow World Heart Day?

    You can follow World Heart Day on Twitter or Instagram, using the hashtags #WorldHeartDay or #HeartDay.

    How to support World Heart Day?

    You can also show your support for World Heart Day by donating to charities.

    • Donate to World Heart Day. You can directly support the World Heart Day campaign, which will use the funds to raise awareness of the cardiovascular disease.
    • Donate to World Heart Federation. Donate to the World Heart Foundation to support projects in low-income countries.
    • Donate to Colours to Save Hearts. Colours to Save Hearts focuses on educating children and parents about the prevention of rheumatic heart disease, which affects 39 million people worldwide – mostly children and adolescents.
    Stay Up to Date - Continuous Integration Notification System

    Stay Up to Date – Continuous Integration Notification System discussion

    Regardless if everything has gone smoothly or if there has occurred an error you want to be timely notified about it. Therefore it is imperative to use a notification system.

    Also, you should not miss the previous part of the article series about web integration – Continuous Integration – Cure for Human Error in Deployment. It is a must-read!

    Generally, you notifications can be sent to:

    • E-mail,
    • RSS feed,
    • HipChat, Slack,
    • Jabber – Google Talk, AOL Instant Messenger,
    • Google Cloud Messaging (GCM) service – Android devices
    • Skype,
    • MSN Messenger,
    • Custom service in XML or JSON.

    Below are sample notification messages in a Hipchat room (advising about successful and unsuccessful deployments of demo projects):

    The basic notification option is to send notifications by e-mail; every CI tool supports it. Email notifications allow getting very detailed information. On the other hand, if you get hundreds of e-mails and messages get easily snowed under, you may need another solution. So what is it? Critically important messages can be accompanied by a text message notification, which you should always notice.

    Most of the tools allow for a number of communication channels. You can choose from the above, among which you’ll likely find your favourite chat tool. We use Hipchat for common notifications, which we accompanied by e-mails in combination with text messages for projects of critical importance.

    Intelligent Notifications

    Every project involves a build practically after every commit. Hundreds of messages take some effort to get organised. That’s why we are happy to be able to use “intelligent notifications”. Do you wonder how it works?

    We do not use artificial intelligence, but relatively simple logic. A notification is sent if the result of the current build is different than of the previous one.

    E.g. It can happen that your last build ended in a failure, even though the previous build was successful. We should find out the cause and remedy it, if we are able to. Of course, it may have happened that the build failed because some cloud service hasn’t been available. In that case we cannot directly influence the situation, but at least the rest of the team and the client will be notified.

    Jenkins CI notification setup is minimalist and in most cases sufficient. Administrators can’t go wrong. The setup contains the outlined “intelligent notification”.

    If you are after a wider setup options you can go for e.g. Atlassian Bamboo, which allows distinction of who is to get a common notification, and who is to be notified about an important event i.e. by “intelligent notification”.

    Tool Selection

    Personally, I can give you a thorough comparison of Jenkins CI, which I have been using for several years, along with Atlassian Bamboo as a modern tool, and a bold adept at further system integration.

    Jenkins CI is free; including plugins, there is no hidden pricing.

    Though, you’ll have to sacrifice some time and effort installing it and setting up configuration tools. Yet, Jenkins has a historical advantage, as it builds on its predecessor named Hudson. Thanks to this long history, it has extensive documentation, and a plenty of plugins for a variety of additional functions.

    Job management is clear, everything is on one page; you simply can’t get lost. On the other hand, the user interface could be considered a bit of disadvantage, as it doesn’t look very “cool” at first glance, but rather “old school”. Well, I guess we shouldn’t expect a bunch of frills in the time of flat design.

    You can see below what a Jenkins CI job dashboard looks like. On the left is administrator menu, history of builds, including the one in progress; in the middle are quick links, and an overview of recent successful / unsuccessful builds, including times.

    For comparison, I also added Atlassian Bamboo. It’s nice, clickable and aimed at less technical users. In addition, if you use Bitbucket as SCM platform and Atlassian JIRA for requirements tracking, you can easily set up the integration and create a compact automated tool ecosystem, which work well together.

    However, I see a significant flaw in the complicated deployment process breakdown, which is plan – stages – jobs – tasks. The system reduces the redundancy of settings, for example, when you define a global variable in the plan and will use it in all jobs; one task can be used in more jobs.

    I miss an overall overview on one page, as it is Jenkins CI. “Plan” management in Bamboo has tabs with different sub-settings. Jobs are broken down to tasks; so you always work only certain fragments. That’s why I consider Bamboo confusing, and potentially contributing to inattentive mistakes. Like other tools from Atlassian Bamboo is licensed and the price may be, especially for small business, also a limiting factor. You can try the basic version for $ 10, but the real operation starts at $ 800 per year.

    To give you a comparison, you can see here what Atlassian Bamboo history of builds looks like (preview including detailed documentation for each screen part).

    As it is not quite possible for a common user to compare all the available alternatives.

    You can find a systematic comparison of 40 continuous integration tools here Comparison of continuous integration software. You will find there various criteria, from supported build tools to notifications and integration options.

    But perhaps none of us has time for that. Yet, we should aim to choose the right tool that will suit you, and which you will be able to operate properly. Jenkins CI proved to be that for me. I can’t imagine continuous integration without it anymore.

    Continuous Integration Can’t be Done without the Right Tool

    As we have seen, continuous integration involves a number of activities. There is plenty of space for mistakes, if they are to be done by a human user. We can’t also disregard the time it consumes and the knowledge required.

    On the top that, if we use human resources we also need to keep in mind possible substitutability.

    Continuous integration experts are expensive and not easy to find. It is therefore appropriate, if not necessary, to also engage in the process an automation tool. How we choose it may be influenced by various criteria. Personally, I suggest not taking into account only the cost of the tool itself, but also what it can do, and how well it works – notifications, the possibility of integration with other services, and user interface. Consider what is most important for you, and test the tools accordingly. If you do encounter problems, try to find someone to help you with that. The chances are there are many companies around the world dealing with a similar situation.

    Finally, certainly don’t worry about starting with continuous integration and the process setup. It may be a bit of an investment at the beginning, but it will save you both time, nerves (and even reputation). Once you have properly set up the automated process within continuous integration, you can just “replicate it only” in the next projects.

    Continuous Integration - Cure for Human Error in Deployment

    Continuous Integration – Cure for Human Error in Deployment

    Continuous integration is a necessary development tool. Thanks to automation and standardization, it helps to effectively prevent errors when deploying applications into operation.

    Also, you should not miss the previous part of the article series about web integration – Architecture and operating of web applications in a cloud environment (Part 2). It is a must-read!

    What is Continuous Integration and What are its Stages?

    Man is not a robot, and that’s the reason why there are a number of repeated steps in IT practice that are worth automating. In application development are constantly repeated certain steps. It is boring to do them over and over, people make mistakes, and machines do not. Continuous integration is a cure for such struggle. So what are the possible uses?

    I consider continuous integration a necessary addition to software development, often adrenalin, and sometimes even fun. My favourite tool is Jenkins CI, which I have the most experience with. There is a whole range of similar tools used for continuous integration, build automation and deployment. Each has its advantages and disadvantages. Selection criteria can vary depending on the price or user-friendliness, and the possibility of integrating other tools and systems. But before we look at the specific tools, let’s first mention something about continuous integration as such.

    Application development goes through various phases, from design and development to testing. Some may run in parallel, and especially in development, it happens that more specialists create more or less interdependent parts of the application.

    The phases need to be combined into a functional unit for the customer, which is not quite that simple. Individual team members perform best work possible, which they have tested and would vouch for. But we do not live in an ideal world, and thus the contributions of various people may conflict sometimes, or someone may make a mistake in the project due to his/her carelessness or negligence.

    Continuous integration helps prevent the client and the system users from having to deal with errors. It involves using various tools designed for this purpose as well as establishing error rate reducing processes.

    Both large and small development teams need to re-build the project over and over.

    This means that particular parts, which are developed by individual teams (or individuals), need to be assembled into a functional project or application, where individual modules smoothly communicate with each other. At the same time it is also necessary that responsible personnel are timely advised if an error occurs (the system correctly notifies authorized personnel).

    After all, it would be a problem if, say, Internet banking users could not make payments, because some of the developers made a mistake in implementation and none of the responsible personnel knew about it. Continuous integration tools are set up to ensure this doesn’t happen and everything goes smoothly as clockwork.

    For this reason continuous integration process should also include automated testing.

    Auth. Note: Naturally, an application build and deployment can theoretically also be carried out manually. Though, we could dispute this would be “continuous” integration. Regardless of the possible error rate (and the time consumed) is not desirable to have processes depend on the presence of trained personnel. So it makes more sense to use an existing tool that is already in place.

    Such tools are Jenkins CI, Atlassian Bamboo, Teamcity, Travis CI, and others. How to pick one is a matter of personal preference, all listed can deal with sub-tasks outlined in this article.

    Stage One of Continuous Integration – Download the Latest Source Code

    The first step in continuous integration is to download the latest code from a source code management (SCM) system.

    Auth. Note: SCM system addresses the following:

    • Hosting – physical housing of code repositories of code version control system
    • Centralization of developed code – for submission and checks
    • Security setup (individual repositories access setup for particular groups)
    • Code verification
    • Other tools can be connected to SCM (request tracking, documentation,..).

    That is why using SCM is an absolute necessity. I could elaborate on it in more detail, but I could go on as long as this article. For this reason, I will mention only the most important details.

    I personally use Git version control system; you may be using Mercurial SCM or Apache Subversion. For more details check the article on version control systems.

    Exception in versioning should be a specific configuration in runtime environment -credentials to log in into the production database, keys to connect to API, etc. For security reasons, these shouldn’t be available to every developer, neither should they float in the “public space”.

    In addition to taking care of security issues, we also need to set a specific debugging level in certain instances independently of the common standard. This is done by employing a versioned local configuration.

    Either way, a versioned code, in its “raw form” may not suffice for the application operation, because after downloading the source code, we must transform it into an executable form.

    Stage Two of Continuous Integration – Building the Project

    Theoretically, a small project can be a small application in itself, built with only a few classes.

    In practice, we do not want to write a code entirely from scratch, and so it is smarter to use one of the frameworks as the basis (Zend, Nette, Spring MVC,..) where the basic requirements, such as safety and programme logic separation in comparison with the presentation, are already sorted out. And of course, each framework includes bits we had prepared to reuse instead of having to create the project from scratch.

    Indeed, we can use plenty of frameworks and libraries. Yet, we need to address systematically their definition and subsequent downloading. So here come in play composer install / update (PHP), maven install (Java), and gradle build. They are here to help downloading related libraries and thus completing the project.

    Stage Three – Build Front-End Code

    In addition to program code, applications also have their own front-end (interfaces) for users. Modern front-end coders routinely prepare styles for LESS / SASS preprocessors. As in the previous case, when working with a program code we need to compile LESS / SASS documents to CSS (into a publishable and usable form). Tools such as Grunt (The JavaScript Task Runner), and/or (A package manager for the web) are here to help us with it.

    Stage Four – Editing Front-End Code

    As I mentioned above, we don’t usually get the code in the desired form straight away. Also, our secondary goal is to save data and CPU power (on the server and on the client’s side), and therefore we try to convert the front-end code (CSS, JavaScript, images) into a compressed form.

    The same rules apply both to front-end codes and programme codes. That means we should do syntax checking and potential error checking.

    Such operations as minification, compilation and testing are done by tools like Grunt (The JavaScript Task Runner) or Bower (A package manager for the web).

    The above tools are here to help us create a ready-made application, which is possible to deploy. Yet, we should test it, prior to publishing it for real users. Even the most conscientious developer can make a mistake. The truth is that when multiple developers work together it can happen that separate pieces produced by each of them are functional on their own, but the joint piece may behave weird or show errors. And that’s the reason why we should pay duly care to checking the code and testing it.

    Monitoring and Testing Continuous Integration

    The tests can be divided into the following groups depending on the moment of initiation:

    • Pre-commit (prior to handover)
    • Pre-deploy (prior to deployment)
    • Post-deploy (post deployment into the target environment).

    The tests can be initiated prior to the integrated change depending on the test type and integration strategy – pre-commit (see e.g. npm pre-commit packageSonarQube pre-commit analysis) or post integration – i.e. post-commit.

    Early stage tests are not related to continuous integration tool, as code testing is done already on the developer side. SonarQube and pre-commit test are done directly in developers’ IDE using Eclipse and InteliJ plugins. Pre-commit tests relate to the source code. This means we don’t test the running application. Instead, we do syntax checking; verify compliance with coding conventions, check whether there are no duplications in the proposed classes, and check the overall code quality.

    Later on, in pre-deploy are done unit tests, we check functionality and correct implementation of particular system units in the form of classes and functions. Here we touch upon the issue of test-driven development, where tests are written prior to the code itself. They reflect all functionality requirements, and we cannot go further unless they are in compliance. If the tests go right we can finish the deployment, and then move on to post-deploy tests.

    Post-deploy tests are initiated following successful deployment:

    • Automated user tests – are created by Selenium IDE and run by CI tool in Selenium server environment.
    • Integration tests verify functionality of the system.

    Nature of some projects requires manual testing.

    These can be, for instance, electronic banking and applications of similar security, which can be logged into only by human users. Some operations may involve two-factor authentication, which we want to test by real human testers. In addition, there are many components, such as forms and calculators that can be tested automatically. Basic tests checking if an application is working after an update, and behaves as expected, can be machine done.

    Automated testing brings in the long run:

    • Repetitiveness – tests are carried out following the same scenario, in more or less the same conditions,
    • Saved time – compared to demanding user testing.

    Despite all the efforts of the development team, building or testing can end in a failure. Also, someone always needs to be notified about the negative result (advising about positive outcomes is not always necessary). This is resolved by a notification system, which we will discuss in the second part of the article.

    You can now follow to the next part – article called: Stay Up to Date – Continuous Integration Notification System discussion.

    Architecture and operating of web applications in a cloud environment (Part 2)

    Architecture and operating of web applications in a cloud environment (Part 2)

    In the first part of this article we got acquainted with the conventional models of services provided in a cloud, the principles of development of PHP applications designed for deployment in this environment, and finally principles of economics of cloud operation.

    In the second part of the article we will introduce practical experience with deployment of PHP system, which was not originally designed for cloud environment.

    Also, you should not miss the previous part of the article series about web integration – Architecture and operating of web applications in the cloud environment (Part 1). It is a must-read!

    CMS system

    Our CMS system uses a local file system or a relational database as a repository for storing CRM data, it accelerates access to CMS objects by multi-level caching (on the 1st level within one request in memory, on the 2nd level in APC cache and on the 3rd level by reserved section of the file system), for full-text indexing and subsequent searching it uses the Apache Solr service.

    Using a local file system in combination with fulltext significantly affects deployment capabilities to the cloud. Interactions of CMS system with CMS model is very intense, in practice, there are dozens to hundreds of small accesses (mtime, fread operations) to objects of CMS model within a single web request.

    Thus latency of approach combined with efficient caching fundamentally affects the speed of putting sites together. Within preparation of the system for deployment in Microsoft Azure cloud several implementations of storage were gradually implemented and tested, starting with existing support for the use of relational database and ending with implementation of storage, combining services Azure Table and Blob Storage.

    In both cases a relatively high latency in storage access provided under Azure as SaaS service adversely manifested itself (in the case of a relational database in the order of tens of milliseconds, in the case of Table / Blob storage to hundreds).

    The solution was to deem the data already loaded into the cache for a certain period of time (in the order of seconds or minutes) to be valid and not to verify their changes in persistent CMS repository. This, however, brings a delay in updating the content in case of deploying in a cluster.

    PaaS or IaaS (Infrastructure as a Service)?

    A separate chapter was performance tuning in PaaS in the environment of Azure Websites. Unlike the Unix environment in this application container based upon Windows Server technology the WinCache module instead of APC or Zend OpCache is available for the purposes of in-memory caching.

    Although in principle this one works the same as the above mentioned modules, however in practice its use brought noticeably worse results within the cache layer for caching PHP bytecode as well as data. For these reasons we preferred the use of laaS for execution of PHP code of web solution based on our own CMS – virtual machines with Linux based operating system, Ubuntu Server, on which it is possible to use proven APC caching or alternatively Zend OpCache extensions.

    By switching from PaaS to laaS model we, however, lost a crucial advantage of Azure Websites, that is  auto-scaling and automatic distribution of the application into cluster administered by the platform, therefore we had to solve these function in other ways.

    Docker or own PaaS solution

    The target solution combines laaS with Docker technology, which allows for preparation of a complete installation of CMS system in the form of an image, which is deployed and run on virtual machines with pre-installed Docker Engine running environment.

    In the case of an on-premise solution it is possible to use arbitrary servers with some distribution of Linux. Own management of distribution of the application into the cluster is then carried out by using the Docker Swarm technology, which can be interconnected with a tool of continuous integration responsible for creating and deploying web projects (in our cases Jenkins CI).

    Server Docker image contains web server NGINX in the role of reverse cache and proxy server, which is connected through FastCGI interface to Zend PHP Engine with all usually required extensions, optionally then also connected to monolithic PHP engine HHVM, which officially supports CMS from version 2.2.16 (selection of engine is carried out by communication to the relevant port assigned to NGINX).

    There is also installation of Apache Solr fulltext engine prepared in the image.This image is then used as a base for creating a complex image of the web solution containing all the application code, which will upload a tool of continuous integration into it, then it may subsequently distribute it into running environment through command line.

    Distributed CMS storage

    As CMS repository, intended for deployment into dynamically scalable running environment (Azure Cloud Service),  our CMS uses a specific implementation using local file system, which records all the changes in parallel to external (in case of Azure SaaS) relational database server, where at the same time the CMS system database located on this server is extended with application change log.

    All changes of CMS objects are recorded into this log within change transaction, then detected by other instances of the same web solution, then retrieved from the database and replicated to the local file storage and cache, while they are indexed by the full-text engine. It is possible to use a temporary disk for cache folder in Azure Virtual Machine, which is connected to the above mentioned directory inside the container of Docker server.

    Although this solution is not saving in terms of data storage (all the data in CMS storage are copied to the local file system and full-text of each running container of the given web solution), it brings the speed corresponding with local deployment without cluster.

    In the case of deployment to on-premise/statically scaled environment it is possible to connect a selected directory to data directory of the web solution from Docker server and thus to have all data which are stored by our CMS in local file system, or more precisely a complete web folder, outside the actual container of our CMS server.

    In case of the cluster the given directory then may be synchronized to other nodes in this cluster using the service GlusterFS, by which replication of change of data across the application cluster is ensured. Such a solution is then generally applicable to arbitrary web applications based on the PHP technology.

    Summary

    According to the level of specificity of the application environment it is possible to deploy PHP applications in Azure either to the existing PaaS model of Azure Websites, or it is possible to use IaaS (Azure Virtual Machines), preferably then in the combination with Docker technology, which allows for easy packaging and distributing the application with a complete application environment, configured according to specific needs, based on Linux to IaaS cluster using Azure Virtual Machines and Azure Cloud Service technologies. In any case, it is possible to at least use the relational database in the cloud environment as SaaS service.

    Useful links

    You can now follow to the next part – article called: Continuous Integration – Cure for Human Error in Deployment.