Blog

Julia Poltavets

GCP vs AWS. Which cloud provider to choose for your backend?

Posted by Julia Poltavets on May 20, 2019

Google Cloud Platform or Amazon Web Services? Choosing the cloud provider for an application server is one of the major challenges in app development. This choice is usually done at the beginning of the project and then it greatly affects the rest of the development, support, and maintenance processes. You need to choose wisely, as migrating the whole infrastructure is no easy task.

In this post, we will try to compare the main features of the services that we can expect from both cloud giants and see what each of them has to offer.

Why do we ever consider using cloud services to host our applications? Once we answer this question, it will be easier to see the criteria that we should compare when choosing the cloud service provider to host our application backend.

What do we need from a cloud service?

When we are about to launch our backend platform in a cloud, we usually check some of the key characteristics that will, to a large extent, define our infrastructure performance.

Computing capacity

The computing capacity is usually judged by the number of cores, or virtual cores (vCPUs), in our case. The larger the number the faster and more efficient the server is going to be. Multiple cores allow running multiple processes simultaneously without slowing or blocking the entire system.

Another parameter that we need to consider in the context of computing capacity is the RAM size. It also affects the server performance, as a larger RAM allows supporting more simultaneous processes and data exchange flows.

Let’s see what AWS and GCP have in regards to computing capacity.

The largest virtual machine AWS has 128 cores, or vCPUs, and 3904 Gb RAM. GCP’s maximum is even higher – 160 vCPUs and 3844 Gb RAM. Obviously, both providers can set up some truly powerful virtual machines.

Of course, you would not need the largest machines on every occasion, as in most cases you are going to be perfectly OK with medium computing capacities. At the same time, it is nice to know that you have options for some heavy-duty computing.

Storage

The importance of storage volumes in a cloud server cannot be underestimated. When it comes to storage, size is not the only thing that matters – although it does matter. In addition to the storage size, we also need to take into account the speed of read and write operations and the ability to process high loads.

Let’s compare storage options in AWS and GCP.

AWS offers two main types of storage – SSD and HDD. In their turn, SSD can be general purpose SSD with the size of 1 Gb to 16 Tb, or Provisioned IOPS SSD with the size of 4 GB – 16 Tb. Provisioned IOPS SSDs are better suited for high workloads and extremely mission-critical use cases, such as database operations.

HDDs can be 500 Gb – 16 Tb in volume and are a recommended option for high throughput processes, for instance, streaming.

GCP offers both SSDs and HDDs up to 64Gb that have high performance, speed, and throughput.

Cloud services

Cloud providers offer not only virtual computing capacities that you can use as you see fit but also various services that also run in the cloud. For example, you can have a containerization or database function that is already set up in the cloud.

AWS has more than 200 such services where you can find mostly anything that you need to build an app and run it. There is, for example, Amazon DynamoDB – a database service, Amazon S3 – a storage service, Amazon Route 53 – a DNS service, and dozens more.

GCP offers a choice of 50+ services. It also has the basic services, such as a database service (Google Cloud Datastore), a containerization service (Google Kubernetes Engine), a DNS service (Google Cloud DNS), and a lot more.

Security

Security is always critical, and in this matter both cloud platforms match each other stride for stride. Both AWS and GCP use proper protection mechanisms that can secure the users’ data:

  • 256-bit AES encryption
  • Compliance with the requirements of security certifications, such as ISO, PCI, HIPAA, etc.
  • Identity and access management including MFA

Cost

Both GCP and AWS apply the pay-as-you-go billing model when you are charged only for the actual cloud capacities that you have consumed. You can have a server for as much time as you need and only pay for what you used. Both use per second billing which means exactly that – your consumption is billed in seconds of your actual cloud usage.

It is not easy to compare the costs of a GCP and AWS virtual server, as there are too many different factors to be taken into account. Both platforms offer pricing calculators where you can estimate the cost of a virtual instance of a certain configuration – Google Cloud Platform Pricing Calculator and Amazon Simple Monthly Calculator.

Both GCP and AWS have free trial options as well as an “always free” plan including a limited number of services. However, the “always free” plans can hardly be an optimal choice for a backend server for your application.

Which cloud provider to choose?

If you are looking here for a definite answer, we might disappoint you. Both Amazon Web Services and Google Cloud Platform show great performance and provide adequate security, thus, can be optimal platforms for hosting your servers. We’ve made this comparison to see their main features and to show that both AWS and GCP are rightfully considered leaders in the cloud services sector.

At QuickBlox we’ve been using AWS as our cloud provider for quite a while. Some time later, though, we added GCP to the list of platforms where we host our products.

It’s a no-brainer that AWS is the number-one choice for the majority of users. With the scores of services, great flexibility, considerable experience, and extended official and non-official documentation all around the Internet, it can hardly be otherwise. GCP, though being a runner-up here, is quickly gaining momentum and may soon be expected to show the same reliable performance and security as AWS.

Julia Poltavets

APIs vs SDKs in Questions and Answers

Posted by Julia Poltavets on May 13, 2019

In software development, API and SDK are the two things that get mixed up very often. Both are used to integrate third-party software, both provide pre-built components and sometimes it may seem that you need to choose between using an API or an SDK in building your app. Even when you browse QuickBlox developer documentation, you will find references to APIs and SDKs.

While APIs and SDKs are somewhat related, they are different in the way they are implemented. In order to clear the confusion between these two concepts, we decided to do a little research on how APIs and SDKs work and how they can be used in application development. We will try to answer the most frequent questions that may arise in connection with APIs and SDKs and help you decide whether an API or an SDK will be an optimal choice for your project.

1. What are APIs and SDKs?

Let’s start with the abbreviations. API stands for Application Programming Interface. SDK stands for Software Development Kit. Both APIs and SDKs are intended to include a software component built by a third party in your own product, but in each case a different approach is used.

2. What is the main purpose of APIs and SDKs?

If we can use a household analogy, an SDK is an IKEA table set, while an API is a drawing of a table or a YouTube tutorial on making a table. When you buy a table from IKEA, you need to assemble it at home using the included hardware but you are going to get exactly the table that IKEA designed. It is not going to be too hard, as all parts are made to come together tightly and you will have as many nuts and bolts as needed to assemble the table. IKEA also includes wrenches and screwdrivers that fit the hardware. You cannot, however, do too much about the size and design.

That’s SDK for you. When a software development company releases an SDK, it gives you a sort of an “assembly kit” where all components have been carefully developed and tested to work together. You will get an entire development environment with all integrations already set up as well as reusable code samples. A quality SDK usually also includes the documentation on how to set up the environment and build the app using the provided tools.

With an SDK, you are getting a complete functional component that you can set up really quickly and with little development effort. Using SDKs is the solution of choice for building client applications, as they include the full functionality as well as the tools to implement it. For example, with our iOS SDK you can create a mobile messenger app for iOS devices in a relatively short time.

Now, let’s look at the APIs. If we again use our table-making example, an API is a DIY option. You can find a step-by-step instruction or a video tutorial on building a table and then let your imagination run free. The basic rule is that a table should have four legs and a top, but you are free to choose how tall the legs are going to be and whether the top should be oval or rectangular. You will procure your own materials and tools and only use the tutorial for reference.

This is how APIs work. In fact, they are a set of rules and standards that you should follow to integrate a third-party service. They provide an interface to it allowing to reach the remote server and perform operations designed by the third party, but you need to set up the integration on your own. You will be free to choose the type of tools you are using in the process, however, integrating an API takes more effort. You will need to set up your own data mapping rules, authentication procedures, synchronization and logging scenarios, and a lot more.

3. What do APIs and SDKs contain?

An API usually consists of a number of methods that enable communication between your software and a third-party service. Calling a method using the strictly defined set of mandatory or optional parameters may change the value or return some data to the UI of your app. For example, QuickBlox API contains the Retrieve messages method allowing to retrieve messages from a particular dialog filtering them by a number of parameters, if needed.

SDKs, in their turn, contain a complete package of development tools designed to create a particular function. An SDK allows setting up the entire development framework to build the app or a functional component. Sometimes, an SDK contains one or more APIs enabling communication with third-party servers and fetching data from them.

For example, among its development tools, QuickBlox offers its Android SDK that you can use to build a messenger app for Android devices. It includes the corresponding code samples, the instructions on setting up the development environment and using the framework, as well as lots of other useful tools.

4. What are the main highlights of APIs and SDKs?

The table below contains a side-by-side comparison of APIs and SDKs based on our development experience. We use QuickBlox API and SDK as examples in this comparison.

APISDK

Integration Time

Usually longer development time that may result in higher costs

Significant time-savings (about 1000+ man-hours per app) allowing to reduce the costs and time-to-market

Data Model

Designed to use standard HTTP protocols and return JSON payloads in response to HTTP requests

Due to the predefined classes that reflect the API data model, there is no need to write boilerplate code

Networking

Can be either written from scratch or set up using the preferred library/framework

SDKs usually sit on top of reliable and tested network libraries (or platform default), therefore, there is no need to develop networking layer

Concurrency

Full control over threads and concurrency. May be useful when performance and optimization are critical

Standard async and sync calls, very straightforward in terms of usage

Storage

No limitations, any storage option can be used

Standard caching & storage using best practices specific to a particular platform

Security

APIs allow putting additional levels of security, using custom encryption etc.

Best practices are used which fits 99% of use cases

Maintenance & Migration

The development team is responsible for the migration to new versions of API and data migration

SDKs have inherent backward compatibility and mechanisms performing data migration in the related storage

Dependencies

Developers can pick the libraries or frameworks that are going to be used and have control over their versions. Alternatively, the integration can be set up with no dependencies

Most SDKs are built on top of popular, reliable and tested open-source libraries. In exceptional cases, dependencies may have conflicts

Coding

The developers are responsible for the whole architecture and have to write all of the code

SDKs require less coding as they are designed to simplify integration for a specific platform

5. What to choose – an API or an SDK?

In view of what we have found out about APIs and SDKs, we recommend that you choose according to your particular situation. If you have time and resources to set up your own integration, choose an API. If you want a quick solution with most of the preliminary work done, choose an SDK.

Besides, as we mentioned already, APIs are the tool to build server-side solutions, that is, if your goal lies in that area, use an API. SDKs, in their turn, are intended to develop client-side solutions and should be selected in such cases.

We hope we could throw some light on the “API vs SDK” issue and help your business make a better-informed choice. If you need more information about QuickBlox APIs and SDKs, contact our team for a detailed consultation. Our experts will gladly help you find the best solution for your messenger function or app.

Julia Poltavets

AngularJS vs React JS: Which is better to build your Web Application

Posted by Julia Poltavets on May 3, 2019

Today, the question “AngularJS or ReactJS” is in the same league as “tea or coffee”. Both are popular JavaScript frameworks, both have huge armies of loyal supporters, both are at the core of top websites. Both have strong development teams behind them – AngularJS was created by Google while ReactJS is a brainchild of Facebook. At the same time, when you get to choosing the technology stack for your new web app, you will need to choose one or the other.

One thing is clear – both AngularJS and ReactJS are great web development frameworks with lots of features speaking in their favor. However, there are differences, and it may help to know them to make a more informed choice.

The architecture

We have referred both to AngularJS and ReactJS as frameworks, however, this is not completely true. While AngularJS is, indeed, a full JavaScript front-end development framework, ReactJS is only a JavaScript library.

For the developer, this difference means that AngularJS provides the complete MVC (Model-View-Controller) pattern while ReactJS, until recently, only supplied the View. However, in 2019 the React team introduced the Hooks feature that allows building the complete MVC using only React resources.

AngularJS comes with lots of features and functions out-of-the-box that allow you to start building your front-end components right away. ReactJS, in its turn, requires a deeper configuration before you can start actual coding.

On the other hand, AngularJS makes you play by its rules that may be rather strict, while ReactJS gives you more freedom in choosing the resources you are going to use.

The pros and cons of AngularJS and ReactJS

Let’s look at some basic advantages and disadvantages of both AngularJS and ReactJS to see how the framework choice may affect the web development process.

AngularJS

ProsCons
Very fast compilation allowing even a very complex code to compile within 3 seconds. Rather complex syntax, especially in the earlier versions.
Two-way data binding improving the view responsiveness.Steep learning curve.
High performance due to the use of the RxJS library.Difficulties of migrating from Angular to other frameworks, if needed.
Component-based development ensuring code consistency, the ability to reuse components, better structure organization and improved testability.Strict architecture that may sometimes create development limitations.
Top-quality documentation.

ReactJS

ProsCons
Easy learning curve. The knowledge of HTML is enough to start writing code for ReactJS.Special JSX syntax that requires some getting used to.
Virtual DOM (Document Object Model) allowing a much faster update of web pages in the browser.Limited out-of-the-box functionality requiring a longer initial setup.
Ability to process high loads.Specific ecosystem making integration with other tools and platforms more difficult.
One-way data binding preventing any changes to parent data by child components.
Lightweight structure.
Easy migration between versions.
Server-side rendering making apps SEO-friendly.

When to choose AngularJS or ReactJS

As we have seen from the comparison above, both AngularJS and ReactJS have their strong sides and their weaknesses. The features that each framework offers can affect your choice depending on your project goals.

For example, both AngularJS and ReactJS can build great SPA (single-page applications). However, if your goal is building an MVP, then your logical choice will be AngularJS, as it offers lots of options out-of-the-box. ReactJS, requiring some more complex initial setup, may be a suboptimal choice here, as for MVPs time is always a critical factor. In short, AngularJS works best when you need to roll out your product as quick as possible, while ReactJS is practical when you are creating an app that is going to grow and evolve over time.

Other factors that you may consider in choosing the framework for your next web app is the availability of developers with the required skills on your team. As we mentioned already, getting started with AngularJS is not easy and takes some serious learning. Thus, AngularJS should be your choice when you already have AngularJS developers on board, otherwise, the kickoff is going to take much longer.

On the other hand, when you have all the skills required to work with AngularJS, your project can start right away, while ReactJS, being not a complete framework but just a library, still takes some setting up.

To summarize, we recommend that you choose AngularJS when:

  • You are building an MVP
  • Your project is very time-critical
  • You have skilled AngularJS developers available

On the other hand, opt for ReactJS when:

  • You are embarking on a large project that is about to grow and scale
  • You need flexibility in choosing the tools and libraries that you are going to use
  • You do not mind a somewhat longer preparation and setup

Web apps using AngularJS and ReactJS

Among the top apps built using AngularJS, we can find such popular names as:

  • PayPal
  • Upwork
  • Netflix
  • Weather.com
  • The Guardian

In its turn, ReactJS can also boast a list of famous brands that use this framework to build their applications:

  • Facebook (no surprise here)
  • Instagram
  • The New York Times
  • WhatsApp
  • AirBnb

Wrap up

This is all to say that no matter which framework you choose you are going to be in good company. Both AngularJS and ReactJS have rightfully claimed their place on the market of front-end development tools and platforms, and the growing number of their supporters is the living proof of their outstanding performance.

Julia Poltavets

5 benefits of using third-party APIs in your Online Business

Posted by Julia Poltavets on April 24, 2019

Today, nobody ever builds software from scratch. And though unique ideas are implemented in unique ways, auxiliary functions supporting the core features are usually reused. Such reuse is possible through APIs, or Application Programming Interfaces, that allows using various functions in other software.

One of the most popular examples of API usage is Google Maps. Almost every application that needs location or positioning functions will most probably integrate Google Maps. Taxi applications, hotel booking aggregators, restaurant finders, service marketplaces – all of them will have that Google Maps window or a Show on map link in their interfaces.

In a nutshell, APIs allow using a great thing made by somebody else in your product. You do not need to build your own maps when you can use what Google made and has been testing and improving for years. You do not need to create your own user registration form when you can use registration with Facebook or Google accounts. That’s how APIs work.

For online businesses, APIs bring a whole range of benefits allowing them to bring new customers, make their brand better recognized and, ultimately, increase their sales. Let’s look at some of them briefly.


Graphical depiction of all the benefits third-party APIs have for Online Businesses

Shorter time-to-market

This one may very well go with “no comment”. By using third-party APIs, a business saves all the time that is needed to design, develop, and implement the functionality that is provided by the API built by some other engineering team. Of course, inserting a third-party module in your product requires certain integration tasks, but when it comes to time, using an API is much more effective. At the same time, while using third-party API comes at a cost that can be partially balanced by your cost savings from not using your own development power to create the same functionality.

Better user experience

In the context of user experience, the benefits are multi-layered. On the one hand, by using a third-party API, your business will be able to focus on its core functionality and make it truly awesome. On the other hand, you can be confident that the integrated features will perform at the top level.

Added value for the business

APIs bring additional functionality which increases the value proposition of your business. For your users, the complete package of services you offer becomes more valuable when it is enhanced with effective third-party software. Moreover, as we already said, a ready-to-use API of some third-party company saves you time for the development of extra features that will make your business even better . All this means that with third-party APIs you are getting added value and competitive advantages at a lower cost.

Timely software updates

As any other software developer, API providers update their products from time to time. If you are using an API, one of the great things is that any updates that the provider released will be applied to your product, too. You only need to set up the automatic check for updates, and that’s it. Besides, all updates released by the API provider will go through all the required tests and can be used easily and safely.

Customization and flexibility

Most third-party APIs and SDKs are sophisticated products with dozens of features allowing to achieve many of the related business goals. At the same time, for the majority of API users, only certain features are relevant while others are not needed right now or at all. When using an API or SDK in your product, you can select only the features that you need and configure them in accordance with your goals.

QuickBlox offers a complete API and SDK allowing quick and easy integration of full-featured chat functionality in your online service. We have spent years to create and test our product, and now we are 100% sure that with QuickBlox you will get exactly what you expect from advanced chat software. Browse our API documentation and contact us for a detailed discussion of how to add custom real-time chat to your online service.

Roman Orlovskyy

Corporate messenger – use cases and benefits

Posted by Roman Orlovskyy on April 16, 2019

For enterprises, internal messaging and communication are the lifeblood of all processes. Today, business is moving at breakneck speed, and it is often vital to communicate a message as soon as possible. While the importance of internal corporate communication is beyond doubt, and the market is full of communication tools, let’s see why it may be reasonable to implement a custom chat software solution.

Customization options

When using a public communication solution, such as Slack or Skype, you need to follow the rules. The functionality you get is what is available in the common package, and you are getting the features you do not need and not getting those that are important.

With a customizable tool, you get sufficient flexibility to adapt the functionality to the needs of a particular enterprise. If your flows require voice conferencing with a recording option – you have it. If you only need the text chat – you can have that.

Of course, customization also includes the possibility to design the chat in the corporate style using the colors and logos that represent the enterprise.

Instant asynchronous communication for routine matters

Of all forms of internal communication, corporate text chat is, probably, the most versatile. Texting allows reaching out to colleagues when telephone calls or personal meetings are inconvenient or hard to arrange and emails take too much time.

In an enterprise application, a text chat allows communicating your message to colleagues almost immediately. Even if your addressee is currently offline, text messages are usually delivered with audio notifications or popups alerting the user of an incoming message.

Text chat allows users to respond at their convenience without distracting them from their activities. At the same time, it is faster than emailing. According to the statistics, almost 40% of people check their inboxes 1 to 3 times per day. In this respect, text chatting is, obviously, more effective. For example, Viber found that 95% of text messages are read within three minutes after sending.

Such factors make text chatting a very convenient means of routine communication that is faster than emailing and, on the other hand, less intrusive than phone calls.

Security and confidentiality

First, an internal corporate messenger is secured by authorization. Only users with corporate accounts can have access to the internal communication tools.

However, the security options offered by an internal communication solution are much wider. You can implement a multi-level access system assigning permissions to certain positions, departments, management levels, etc.

In addition, an internal messenger can be used to form groups or channels accessible only by invitation. This feature provides an additional layer of security and confidentiality already within the enterprise perimeter by allowing access on the “need to know” basis. This way, extremely sensitive matters remain within the group of the employees they concern directly.

Virtual meeting rooms

Today, large enterprises may have a truly global scale with different departments located on different continents. For them, having the option of holding a real-time meeting is one of the reasons for choosing a particular communication tool.

Advanced communication solutions provide both audio and video conferencing options. During such virtual meetings, users can also share screens, send text messages, upload files, and record entire meetings or their parts. Such real-time conferences are a perfect solution for holding regular syncups, product demonstrations, project planning sessions, and a lot more.

On-the-move updates

For field personnel and traveling employees, a mobile messenger is a great means of maintaining contact with their back-office colleagues. Here, the use cases are virtually unlimited – from real-time instructions to service personnel and quick updates about urgent matters to virtual meetings with people who are on the move.

With a mobile messenger installed in a smartphone, employees can remain abreast with what is going on in their departments and contribute their input during important discussions. At the same time, a complete solution consisting of a desktop and mobile messenger versions will cover all possible communication needs, both for office personnel and their traveling colleagues.

Communication tool for mobile teams

For enterprises using mobile teams in their business, an internal communication solution is a means for teams to maintain contact. When a team creates a dedicated chat or channel, it becomes their space for resolving routine and urgent matters promptly.

When the whole team is on the same channel, it is easy to discuss and organize duty rosters, find replacements in case of unplanned absences, come up with solutions for emergencies. Besides, the team channel can be used to organize a brainstorming session when a quick response is required.

How QuickBlox can resolve all communication needs of an enterprise

QuickBlox API and SDK create a customizable communication solution that can be deployed at the enterprise scale. With QuickBlox, you are getting outstanding flexibility in selecting the required functionality and forming a communication tool fully corresponding to your business needs. You can choose to set up text, audio, and video communication or select only those formats that suit your purposes.

In our communication products, we implement the most advanced security mechanisms. Together with a comprehensive access management system, they allow building a secure communication app ensuring proper data protection. We use data encryption to protect your communications from compromise and host our servers in cloud services by reputed providers, such as AWS, Microsoft Azure and Google Cloud Platform.We will be glad to consult you on integrating an internal communication solution for your enterprise. Contact us at enterprise@quickblox.com, and we will help you build a communication app that works exactly as you wanted.