Serverless Computing

Serverless Computing is a computing model where servers are not used. Are you kidding me? You are right. This is not a case. Serverless Computing is actually a misnomer. What it really means is developers are freed from managing the servers and are free to focus on their code/application to be executed in the cloud.

Serverless Computing
Serverless Computing – You won’t need such a huge space!!

So, how does Serverless Computing really work?

In this computational model, you only need to specify minimum system requirements such as RAM. Based on that the cloud provider would provision the required resources such as CPU and network bandwidth. Whenever you need to execute your code, you hit the endpoint and your code is executed. In the background, the cloud provider, provisions the required resources, executes the code and releases the allocated resources. This allows cloud provider to use the infrastructure for other customers when they are idle. This also gives out the benefit to the customers as they are not charged for the idle time. Win-Win situation for both, isn’t it?

Serverless Computing is popular in microservices architecture. The small pieces of code which form the microservices can be executed using Serverless components very easily. On top of it, cloud provider also handles the scaling up. So if there are more customers hitting your serverless endpoint, cloud provider would automatically allocate more resources and get the code executed.

Any precautions to be taken?

Absolutely. Every developer needs to keep few things in mind while developing code for Serverless computing:

  • The code can’t have too many initiations steps, else it will add to the latency.
  • The code is executed in parallel. So there shouldn’t be any interdependency which would leave the application or data in the incoherent state.
  • You don’t have access to the instance. So you can’t really assume anything about the hardware.
  • You don’t have access to local storage. You need to store all your data in some shared location or central cache.

So who all provide this option?

  • AWS (obviously!!) was the first one to provide this (2014) – AWS Lambda.
  • Microsoft Azure provides Azure Functions
  • Google Cloud provides Google Cloud Functions
  • IBM has OpenWhisk which is open source serverless platform

Support for languages varies from provider to provider. However, all of these offerings support Node.js. Among other languages, Python, Java are more popular.

Related Links

Related Keywords

Serverless Architecture, API Gateway, AWS S3, Microservices Architecture

Bootstrap

One of the meanings of word “Bootstrap” means starting up with minimal resources. In technology, term “Bootstrap” refers to a front-end web framework, which needs minimal work to get your website ready. It provides basic structure in the form of HTML and CSS based design templates, forms, buttons, and other web components. With the use of provided libraries, one can set up her website pretty quickly.

Bootstrap - Build responsive websites quickly
Bootstrap – Build responsive websites quickly

What does Bootstrap provide?

Default configuration provides a grid system made of 12 columns. A developer can choose how does she want to arrange the data amongst these 12 columns. She can choose to have only 2 column structure each column spanning 6 cells or she can also choose to have the first column as 4 cells and second as 8 cells. Each row could have a different structure as per the need of the design.

Bootstrap provides easy-to-use classes to support grid structure mentioned above. It also provides easy-to-use classes for standard HTML components such as buttons, lists, tables etc. Standard look-n-feel for messages (alert, error, warning, notice etc) is also added to the framework.

Additionally, it also provides jQuery which is used by the framework for standard validations, event handling, and other several things.

What are the advantages of Bootstrap?

Following are few of the several advantages of using Bootstrap framework for your website:

  • Responsive – websites built using this framework can adapt to the device size and can easily rearrange the components (hide, resize) as per the form factor of the device. In fact, the latest version of Bootstrap has been built with “mobile-first” philosophy. It helps a lot in the design of modern web and mobile-web applications.
  • Faster Speed Of Development – Given the availability of ready-made classes and components, one can quickly develop the website using this framework.
  • Customizability – You can also customize certain sections of the website by overriding the CSS classes.
  • Community Support – This is one of the frameworks which has huge community support – active GitHub project, several forks and several contributors. This is in addition to thousands of articles explaining how to use this framework.

The only disadvantage I came across about Bootstrap was – all the websites that use only basic Bootstrap, look alike! But this is something easy to overcome by customizing the website to a certain extent.

Any alternatives to Bootstrap?

Ample of them. Foundation, Skeleton, Pure.CSS, HTML5 Boilerplate and many more.

Related Links

Related Words

Web Framework, Responsive Web Design, Javascript, CSS, jQuery,

Full-stack Developer

How many times have you heard your friend saying – “I am looking for a Full-stack developer, but couldn’t find a single one. Do you know someone?” And you might have left wondering what is this “Full-stack” now? Let’s understand this term.

What is a Full-stack developer?

Full-stack developer essentially means a developer who knows and can develop backend as well as frontend functionalities of a web or mobile application. In the current age, where almost all the applications are web and mobile based, it has become important for teams to have a person or persons who can work on various aspects of the application. Such developers tend to know several things about developing mobile or web application. However, they are not necessarily master in every aspect of application development. Their knowledge about overall application helps the teams to do right things from beginning to end and hence such developers are valuable resources.

So, what all things a Full-stack developer is expected to know?

Full-stack developer
Full-stack developer Representative technologies

Although there is no concrete list of things, following areas are expected to be known by a Full-stack developer:

  • HTML/CSS
  • Javascript/JQuery
  • Bootstrap
  • Backend application languages such as PHP, Java, Django, Ruby, Python
  • Databases including NoSQL, OLTP, and OLAP
  • Web application architecture
  • Infrastructure configuration on cloud (AWS, Azure)
  • Conversant with development methodologies such as DevOps and Agile (including relevant toolchains)
  • Source Control tools such as git

This person needs to be aware of several things – how various technologies, components work with each other? Which platform would be better for the requirement at hand? Which tools would give most productivity? etc.

Are you a such a valuable developer? Let me know in comments!!

Related Link:

Related Keywords:

DevOps, Agile, Web Developer, Backend Developer

 

DevOps

And here is another buzzword – DevOps. This term is coined using “Development” and “Operations” together. Typically “Development” includes development and testing teams both. Whereas “Operations” include the system administrators, infra engineers etc who maintain the dev, testing, and prod environments.

What is DevOps exactly?

It is a set of practices which attempt to reduce the friction between the dev team and the Ops team. This essentially means culture change for both the teams – Dev and Ops. Both teams need to work towards a common goal of “Enabling business”. From one angle, both these teams are working against each other – Dev bringing in the change and Ops resisting the change to keep the environment stable. This perspective forces these two teams to work in silos whereas DevOps practice forces them to work together.

DevOps Cycle
DevOps – Credit: By Kharnagy (Own work) [CC BY-SA 4.0], via Wikimedia Commons

How does DevOps break silos?

It changes the culture in both the teams to follow certain practices:

  • Engage Early, Engage Often
  • Talk
  • Involve each other
  • Invite everyone to stand-ups and retrospectives

It also focuses on automation and monitoring a lot. Builds, testing, deployments, system configuration, Monitoring etc. With this kind of automation, any kind of issues get detected early and get fixed early. Complete set of tools have got built to enable teams to perform in this manner. Some of the tools are – Chef, Puppet, Vagrant, Jenkins, Dockers, Ansible etc.

DevOps Ecosystem

Take look at the map below. You would get a fair idea how developed this ecosystem is.

 

DevOps Ecosystem
DevOps Ecosystem

Comparison of DevOps with Agile

Both these terms are related and have a lot of overlap. At the same time, they have certain differences. Agile methodology gave rise to automated builds, test automation, Continuous Deployment and Continuous Delivery. With DevOps, Operations related things such as configuration management, monitoring, metrics etc got included in the whole process. So in a way, one can say that DevOps is an extension of Agile.

Related Links:

Related Keywords

Agile, Continuous Delivery, Continuous Deployment

Node.js

Let’s know about a leader in event-driven architecture – Node.js. This is an open source and cross-platform runtime environment built using JavaScript for server-side script execution. Javascript was historically used for script execution on the client side (i.e. browser). However, this environment allows developers to use the same language on both sides that server side as well as client side.

Why is Node.js so popular?

Node.js gained popularity because of the ease of doing simple tasks and the scale that this environment can provide. It implements the event-driven architecture and async I/O. That means, whenever a client requests data, an event is added to the event queue. An Event loop constantly picks up the events in the queue. If any request can be responded to, without any blocking operations such as reading data from file system or database, it is responded immediately. If the operation is time-consuming as in case of DB operation, the event is handed off to the internally maintained thread pool and a call back is registered for this event. While the thread is executing the code in the backend, the main thread is free to process next request. This increases the throughput of Node.js server tremendously. When the DB operation is completed, the response is passed on back to the client through the callback mechanism.

Node.js model
Node.js representation. Source: https://strongloop.com/strongblog/node-js-is-faster-than-java/

Since there are already quite a few articles available on this subject, I am going to list them here for your ready reference:

 

What are the common use cases for Node.js?

Whenever you are intending to have a constant connection between server and client, Node js becomes one of the candidates. Typical examples are – a chat server, online game, Streaming etc.

Some trivia about Node.js

  • Created by Ryan Dahl in 2009
  • Uses V8 Javascript engine by Google (which is also used in Google Chrome)
  • Cross-platform – runs on Linux as well as Windows.
  • Outperforms Apache + PHP and rivals the performance with Nginx.

Related Links:

Related Keywords:

Ruby On Rails, Django, Apache, Nginx, Event Driven Architecture (EDA), Software Architecture, Non-blocking I/O, Async I/O