Welcome to curated list of handpicked free online resources related to IT, cloud, Big Data, programming languages, Devops. Fresh news and community maintained list of links updated daily. Like what you see? [ Join our newsletter ]

What is a gRPC API and How Does it Work?

Categories

Tags apis microservices app-development performance web-development

gRPC has become an important technology for implementing distributed software systems that need to run fast on a massive scale. In short, gRPC is an API framework that allows a program in one location on the internet to pass data to a distinct function in another program at another location on the internet for processing. By Bob Reselman, @CogArtTech.

gRPC has drawn significant interest from the development community since the specification was released as open-source by Google in February of 2015.

In this article, we’re going to discuss how gRPC emerged on the landscape of distributed computing. Also, we’re going to present an overview of the gRPC specification and show how the specification is implemented using a demonstration gRPC API created especially for this series of articles.

The main content of this article:

  • The need for inter-process communication
  • Remote Procedure Calls, the precursor to gRPC
  • Implementations of RPC
    • Stored Procedures
    • RPC and ERP
    • RPC under Java
    • XML-RPC
  • The emergence of gRPC
  • The gRPC Framework in a Nutshell

Basic concepts behind gRPC

Source: https://www.programmableweb.com/news/what-grpc-api-and-how-does-it-work/analysis/2020/10/08

Streaming is a powerful feature of gRPC and one that deserves additional attention. gRPC is an important framework on the API development landscape. The use of Protocol Buffers, which is foundational to the gRPC specification offers a way to facilitate lightning-fast data transfers over the network. Excellent read!

[Read More]

Software architecture diagrams - which tool should we use?

Categories

Tags software-architecture cio teams devops cicd microservices

“Which diagramming tool should we use?” - I hear this question on a regular basis, with teams debating the pros and cons of tools such as PlantUML vs Mermaid, for example. By Simon Brown.

Rather than argue over which diagramming tool you’re going to use, why not use them all? Although we only saw PlantUML support in the previous blog post, the open source Structurizr CLI actually allows you to use a number of tools to render your software architecture diagrams. For example, you can create the same view (C4 model Container diagram), each created from the same DSL file, and rendered in different diagramming tools.

The article the compares following tools:

The Structurizr DSL and CLI also support Dynamic diagrams for showing collaboration/behaviour, and interactions at runtime. Each diagramming tool has its own pros and cons, so using a tool agnostic format to define your model and views provides an easy way to try them all out, and reduce lock-in.

This is one from 5 articles in a series focusing on software architecture diagrams as text. Please check the rest of them, too. Interesting read!

[Read More]

Using GitHub container registry in practice

Categories

Tags containers kubernetes cicd web-development

Exploring the new capabilities of GitHub Container Registry. Did you know that GitHub has launched the new GitHub Container Registry September 2020? By Kasun Rajapakse.

A Container Registry is a place to store and manage container images. These container images can be either Public and Private. The Public container images are accessible by anyone, whereas you can configure access control for Private container images.

Today most of the applications are running on the cloud. Major cloud providers support downloading container images from popular container registries to deploy applications on demand.

Here is what’s covered in this article:

  • Introduction to container registry
  • The new capabilities of GitHub Container Registry
  • How to migrate to GitHub Container Registry?
  • A use case — Deploying an Nginx webserver to Kubernetes with GitHub Actions, Kubernetes, and GitHub Container Registry

The new features of GitHub Container Registry includes:

  • Ability to store container images under your organization
  • Fine-grained permissions for the container images
  • Can access public container images anonymously

GitHub Container Registry allows organizations to seamlessly host and manage their container images with fine-grain permissions. It can store both Private and Public container images as well. You will also get a comparison between other container registries. Nice read!

[Read More]

Client side architecture basics guide to testable flexible maintainable react

Categories

Tags open-source react ux software-architecture web-development nodejs

Though the tools we use to build client-side web apps have changed substantially over the years, the fundamental principles behind designing robust software have remained relatively the same. By Khalil Stemmler.

Developers are confused about where to start and what to choose when they start learning to write high-quality React applications. They want a strong foundation of knowledge and the confidence to architect React applications at scale built to current industry standards.

This guide teaches you client-side architecture fundamentals. It’s the result of my research using first principles on how to design and develop robust, flexible, testable, and maintainable client-side applications.

Modern Model View Presenter

Source: https://khalilstemmler.com/articles/client-side-architecture/conclusion/

During my experience working on client-side apps of varying sizes, I’ve realized that some serious upfront design on the architecture can have a significant impact on the quality of the code for the duration of its life. From simple dashboards to multi-layered apps with rendering layers, domain logic, multiple types of users - this guide teaches you the essential design principles front-end developers inadvertently code around within their everyday programming jobs.

The main bits this guide covers:

  • Prerequisites
  • Architecture
    • Model View Controller (MVC) explained
    • Model View Presenter (MVP) explained
    • MVC & MVP are too generic
    • Tasks of the model
    • Tools used within the model (React hooks, Redux, Context API, Apollo client …)
  • Principles
  • Layers
    • Presentation components
    • UI logic
    • Container/controller

… and much more. Excellent source of the information for anybody in the frontend development. Author honestly thinks that reading books and learning from the past is one of the best ways to avoid future mistakes. Design principles are great. You don’t need to always follow them, but know the rules before deciding whether you want to break ’em. Great source of knowledge!

[Read More]

Search engine giants like Google could soon face competitions

Categories

Tags open-source search miscellaneous software software-architecture web-development cio

The European Union and the United States want to introduce tighter rules for tech giants like Google. Search engine rivals are ready to step up as efforts are made to create a fairer competitive environment. By dw.com.

Is it right that one company should dominate the internet the way Google does? One person who feels things should be different is Gabriel Weinberg, the 41-year-old CEO of DuckDuckGo, a search engine that claims to protect the user’s private sphere and not collect huge amounts of personal data like Google.

While such legal action has been taken in somewhat piecemeal fashion in the US, the European Union is planning large-scale measures that will revamp the digital world. The European Commission wants to ensure fair competition with a digital services law and a digital market law. Those who violate the intended legislation could face penalties of up to 6% of their annual global revenue.

Asymmetries of power: According to the proposal by the European Commission, platforms will no longer be allowed to prioritize their own content and products over those of other providers. They will have to make their advertising and their recommendation algorithms more transparent so that is possible to trace what is shown to whom when. The EU is even considering breaking up corporations if they don’t stick to the EU rules.

One effective weapon could also be so-called interoperability. This means that the big corporations would have to open up their systems. For example, a WhatsApp message could also be sent to Telegram. “This could lead to more competition on the messenger service market,” Beckedahl told DW. Interesting read!

[Read More]

How to structure CSS classes

Categories

Tags web-development css frontend app-development react

A clean and arranged CSS structure is hard to maintain in growing projects. Therefore it is important to think about how you would like to structure your classes right from the start so that you don’t lose control. But if you start searching for methodologies and techniques to organize your CSS, you will soon realize that there are many ways to reach your goal! By Anne Debora Zimmermann.

The universe of CSS methodologies is big and grows from time to time, although the list of the most popular ones seems not to change:

  • Object-Oriented CSS (OOCSS) by Nicole Sullivan, introduced 2009
  • Block, Element, Modifier (BEM) by the developer team at Yandex 2005, open source since 2010
  • Atomic CSS by Thierry Koblenz, introduced 2013
  • Multilayer CSS (MCSS) by Robert Haritonov, introduced 2014
  • SUIT CSS by Nicolas Gallagher, introduced 2014
  • Attribute Modules for CSS (AMCSS) by Glen Maddern & Ben Schwarz, introduced 2014
  • Scalable and Modular Architecture for CSS (SMACSS) by Jonathan Snook, introduced 2015

You’ve probably already heard of BEM, after all, it’s the most known one and maybe even a kind of superstar among the CSS methodologies. The creation of BEM was started by a developer team at Yandex in 2005 and it became open source in 2010. Companies that are using BEM are e.g. Google, BBC, and BuzzFeed. SUIT CSS is another methodology with many similarities and was developed by Nicolas Gallagher in 2014. Companies that are using it are e.g. Twitter, BBC Three, and LevelEleven.

// SUIT CSS
// LESS nesting
.u-fullSize {}
.AuthorCard {
  &-image {
    &.is-empty {}
  }
  &-description {}
  &-name {}
}

Both methodologies include component-based thinking to achieve reusable, clean code for faster development and code sharing in a scalable team. And both provide a clean structure of semantically meaningful class names to express how a component is structured and if there are presentation modifications. Although the spelling is different, there is a best practice that runs like a red thread through both: Instead of deep nesting, try to build new components. This also includes to focus on writing CSS classes in form of flat nesting. Excellent read!

[Read More]

Deploy Fedora CoreOS servers with Terraform

Categories

Tags devops nginx microservices servers software

Fedora CoreOS is a lightweight, secure operating system optimized for running containerized workloads. A YAML document is all you need to describe the workload you’d like to run on a Fedora CoreOS server. By Nathan Smith @fedoramagazine.

This is wonderful for a single server, but how would you describe a fleet of cooperating Fedora CoreOS servers? For example, what if you wanted a set of servers running load balancers, others running a database cluster and others running a web application? How can you get them all configured and provisioned?

The main parts of this article:

  • Getting started
  • Configuring Terraform
  • Updates and immutability
  • Using variables
  • Leveraging the dependency graph
  • Web server configuration
  • Load balancer configuration
  • Clean up

The load balancer will is a basic HAProxy load balancer that forwards to each server. Code for this tutorial can be found at this GitHub repository. Feel free to play with examples and contribute more if you find something you’d love to share with the world. Good read!

[Read More]

Open source strategy of Amazon Web Services

Categories

Tags open-source app-development web-development cio learning

Did you know that Amazon leads more than 1,200 open source projects on GitHub? That number, which author got from the Open Source at AWS web page, was confirmed by Asay (Head of Open Source Strategy and Marketing at Amazon Web Services) to represent “officially sponsored projects” — meaning they are open source projects that began inside of AWS, rather than being independent projects run by AWS employees. By Richard MacManus.

Asay added that AWS actually contributes to thousands of other open source projects, too. “The majority of the [GitHub] repositories to which we contribute are not AWS sponsored,” he said. Asay spends a bunch of his time working with AWS partners, such as MongoDB. Which brings up an interesting question: how does he explain the open source strategy of AWS to a company like MongoDB, which AWS actually competes with because of open source. Long story short: MongoDB is a company built around open source technology that it created, only to then watch AWS launch a managed service version of the same technology.

The article further explains:

  • Why does aws want you to use Open Source?
  • Why AWS contributes to so many Open Source projects
  • Open Source as a strategy for AWS

As for AWS, it is not only running 1,200 open source projects and contributing to thousands more, but it’s also the place where a huge amount of open source code runs. Good read!

[Read More]

How to build with Terraform: Azure VMs (Windows)

Categories

Tags devops app-development web-development programming azure containers

Have you created an Azure VM via the Azure portal before? If so, how many clicks did it take to do that? Can you do it, again and again, providing the exact same input values to ensure you meet a specific standard? Probably not. You need to automate the process. Create Azure VMs with Terraform! By Adam Bertram.

In this article, you’re going to learn how to get started with Terraform by creating an Azure VM. This tutorial will be a great Terraform Azure example.

The main bits of this guide are:

  • Installing terraform
  • Authenticating to Azure
  • Create a configuration file
  • Build the Azure VM with terraform
  • Clean up

Terraform uses providers to talk to various on-prem and cloud vendors. In this case, you need to configure the Terraform Azure provider. Assuming that you’ve got the Azure CLI installed and already authenticated to Azure, you ned to first create a service principal. Terraform will use the service principal to authenticate and get access to your Azure subscription.

Terraform is a great and free tool to build infrastructure in many different areas. Learning the syntax of HCL is the hardest part of Terraform but honestly, HCL is an intuitive language. If you’re thinking about using a tool like Terraform or ARM temples, for example, learn Terraform. Excellent!

[Read More]

TypeScript compilation performance best practices

Categories

Tags nodejs javascript app-development web-development programming

There are easy ways to configure TypeScript to ensure faster compilations and editing experiences. The earlier that these practices can be adopted, the better. By Daniel Rosenwasser.

Beyond best-practices, there are some common techniques for investigating slow compilations/editing experiences, some common fixes, and some common ways of helping the TypeScript team investigate the issues as a last resort.

The main parts of this guide:

  • Writing easy-to-compile code
  • Using project references
  • Configuring tsconfig.json or jsconfig.json
  • Configuring other build tools
  • Investigating issues
  • Common issues

TypeScript compilation is often performed with other build tools in mind - especially when writing web apps that might involve a bundler. While we can only make suggestions for a few build tools, ideally these techniques can be generalized.

Perceived editing performance is frequently impacted by a number of things, and the only thing within the TypeScript team’s control is the performance of the JavaScript/TypeScript language service, as well as the integration between that language service and certain editors (i.e. Visual Studio, Visual Studio Code, Visual Studio for Mac, and Sublime Text). Ensure that all 3rd-party plugins are turned off in your editor to determine whether there is an issue with TypeScript itself. Good read!

[Read More]