---
title: Kubernetes, a Practical Introduction
description: Still don't know what Kubernetes is? Don't panic! In this blog, we will help you to understand this software and how to create your first cluster.
image: https://blog.nexton.dev/hubfs/Nxt%20Blog-%20kubernetes.png
---

[![Nexton Hubspot](https://blog.nexton.dev/hubfs/Nexton%20Hubspot.png)](https://nexton.dev/)

[About](https://www.nexton.dev/about) [Contact](https://www.nexton.dev/#letsTalk) [For Talent](https://www.nexton.dev/talent) [For Companies](https://www.nexton.dev/)

- Menu Item 1 
    - Sub-menu Item 1 
          - Another Item
    - Sub-menu Item 2
- Menu Item 2 
    - Yet Another Item
- Menu Item 3
- Menu Item 4

[ABOUT](https://www.nexton.dev/about)

[CONTACT](https://www.nexton.dev/#letsTalk)

[FOR TALENT](https://www.nexton.dev/talent)

[FOR COMPANIES](https://www.nexton.dev/)

[Technology](https://blog.nexton.dev/tag/technology) - Fri Oct 16 2020

# Kubernetes, a Practical Introduction

[![Fabricio Pautasso](https://blog.nexton.dev/hubfs/federico%20pata.png) Fabricio Pautasso](https://blog.nexton.dev/author/fabricio-pautasso)

If you arrived here you already know something about Kubernetes or, you are trying to learn a little bit about it. This is a beginner practical guide where we will be learning some of the key concepts and creating our first cluster. Let’s get started:)

## Kubernetes

Per the official documentation:

> Kubernetes is a portable, extensible, open-source platform for managing containerized workloads and services, that facilitates both declarative configuration and automation.

So, in plain text Kubernetes, a.k.a k8s, is a container orchestration tool. To talk about a container orchestration tool, first, we need to know about containers.

## Containers

At a high level, containers wrap code and it’s dependencies, so the application can run faster and reliably from one computing environment to another. This makes containers, a great choice for automation!

With containers, we are not installing software directly on the host operating system instead we are wrapping it in a self-contained package that has everything that the application needs to run.

There are some containers options out there, but the most used and with a great community is **Docker**.

[Deploying Docker images to Heroku with CircleCI](https://www.nextonlabs.com/blog/deploying-docker-images-to-heroku-with-circleci)

So, is it not enough with containers? Why do we need an orchestration tool?

Well, with containers you can deploy the same piece of software on a cluster of several servers. This can help you with high availability and scale-up your app. But then a couple of questions arise:

- How do you manage the deployment of several containers to the cluster on software updates?
- How do you ensure that when a server goes down, a new server will be created with the same configuration and containers?
- How do you move containers around when one of the servers is running out of resources?
- How can we scale-up the cluster when we need to ramp up new servers to handle additional load?

And the list can continue growing. Of course, you can deal with a lot of these things manually, but a great deal of effort will be needed. It’s better to have our new best friend Kubernetes to take care of automating all our containers stuff and make it shine :)

## Kubernetes cluster overview

<https://images.ctfassets.net/k4d8pgyc7rbq/6rUYmeTiW2w9Il75mTqEh2/5f300fabf6a73020779761e6982d9d0f/0_nSO2YUGMnwRd4xc_.png>![Kubernetes Control Plane](https://images.ctfassets.net/k4d8pgyc7rbq/6rUYmeTiW2w9Il75mTqEh2/5f300fabf6a73020779761e6982d9d0f/0_nSO2YUGMnwRd4xc_.png)

In the previous diagram, you can see all the components that are needed for a Kubernetes cluster, let’s briefly review some of them.

**Kubernetes control plane** components are the ones that make global decisions about the cluster, like responding when a node goes down, scheduling, pod replacement, etc.

**etcd** is the cluster database, is a consistent and highly-available key-value store. (metadata)

**kube-scheduler** is a component that is listening for newly created pods and distribute them on the different cluster nodes

**kubelet** is an agent that is verifying that every container is running in a pod

**kube-proxy** is the pods networking responsible. It maintains network rules between the nodes.

### Nodes

A node is a worker machine in Kubernetes, it may be a VM or physical machine, depending on the cluster. (EC2 in AWS, Droplet in Digital Ocean) Each node contains the services necessary to run pods and is managed by the master components. The [service](https://kubernetes.io/docs/concepts/workloads/pods/pod/)s on a node include the [container runtime](https://kubernetes.io/docs/concepts/overview/components/#container-runtime), kubelet and kube-proxy.

### Controllers

Controllers in Kubernetes are the components that watch out for the state of the cluster, and then make or request changes when needed. Controllers are always adjusting the cluster to leave it in the desired state. For example, the Node Controller is responsible for noticing and responding when nodes go down.

## Creating our first cluster

Let’s start by creating our first cluster. We will do that using Digital Ocean.

To follow along you can [create a new account here](https://www.digitalocean.com/?refcode=f09c02d4fcb5&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=CopyPaste). *Note: this is a promotional link, so you will receive $100 USD for 60 days*

When you are done with your account setup, just go to manage -\> Kubernetes and click on Create a Kubernetes Cluster. To start, we will choose the last version of Kubernetes, the default server location and the type of nodes to be Standard. We will start with a number of nodes of 1, we can scale it up later if needed. Then we just click on create cluster.

[![Cluster capacity](https://images.ctfassets.net/k4d8pgyc7rbq/4SGgR6AxBf7Luzn0YUMmPp/47db7a3f00d06610ac5dfee7436320e8/1_tQ0ccMwfKIE_y3A5p4gtfQ.png)](https://images.ctfassets.net/k4d8pgyc7rbq/4SGgR6AxBf7Luzn0YUMmPp/47db7a3f00d06610ac5dfee7436320e8/1_tQ0ccMwfKIE_y3A5p4gtfQ.png)

While the cluster is being created, it can take like 4 to 5 minutes, you can start installing the required management tools

[![Page of getting started](https://images.ctfassets.net/k4d8pgyc7rbq/5toXdK0SHJRvPwLtEhyCOv/97eb826ab45b968c30941b5fcfbab517/1_sagulET_lvGXtHvDRFIbiw.png)](https://images.ctfassets.net/k4d8pgyc7rbq/5toXdK0SHJRvPwLtEhyCOv/97eb826ab45b968c30941b5fcfbab517/1_sagulET_lvGXtHvDRFIbiw.png)

The first step would be to install kubectl in your local machine, if you are in mac we can use brew for that, in case you use another operating system [you can check the guide here.](https://kubernetes.io/docs/tasks/tools/)

```
brew install kubectl
```

Next, we need to download the cluster configuration file.

[![cluster configuration](https://images.ctfassets.net/k4d8pgyc7rbq/5C3sCGMlgDLYZ4fkmM2OqU/f041a59cc86402fa75f05f9d84342e3e/1_bK7VmSwn1P7mMFLULcTdkw.png)](https://images.ctfassets.net/k4d8pgyc7rbq/5C3sCGMlgDLYZ4fkmM2OqU/f041a59cc86402fa75f05f9d84342e3e/1_bK7VmSwn1P7mMFLULcTdkw.png)

Instead of running the recommended script from Digital Ocean, we can move the file to our installation directory and set it as our current default configuration

```
mv /Users/{your_user}/Downloads/k8s-1–16–6-do-0-sfo2–1581767391051-kubeconfig.yml /Users/{your_user}/.kube/config
```

 

Now when you run the get nodes command you should see the just created node

```
kubectl get nodesNAME STATUS ROLES AGE VERSIONpool-87jtlrd84-dr1t Ready <none> 29m v1.16.6
```

*One thing to note about [Digital Ocean](https://www.digitalocean.com/docs/kubernetes/) is that master nodes (where controllers, etcd, kube-api-server, etc are running) are fully managed by them at no cost, so the only cost you have is the worker node one.*

At this point, we already have our cluster up and running and one worker node. Let’s create a new namespace to start deploying our code.

### Namespaces

Namespaces provide scope for names. Names of resources need to be unique per namespace. Namespaces are usually used to create different environments like development, staging, production, etc, so resources get isolated per environment.

Let’s review the list of our current namespaces

```
kubectl get namespaces
```

To create our first development namespace we will need a YAML file like the following

![Captura de Pantalla 2021-06-15 a la(s) 11.54.46](https://blog.nexton.dev/hs-fs/hubfs/Captura%20de%20Pantalla%202021-06-15%20a%20la(s)%2011.54.46.png?width=1206&name=Captura%20de%20Pantalla%202021-06-15%20a%20la(s)%2011.54.46.png)

Then run the following command to create it in your Kubernetes cluster

```
kubectl apply -f dev-namespace.yml
```

If you do a

```
kubectl get namespaces
```

you will see your new namespace in the list. You can also use ns instead of namespaces in the previous command.

<https://images.ctfassets.net/k4d8pgyc7rbq/13UwzUsetKp9urYEJynJ1v/70a4ca0680ffdab554106cfc91419fb8/1_tIeSQWTPISXBRIdKQiDeIw.png>![Code example](https://images.ctfassets.net/k4d8pgyc7rbq/13UwzUsetKp9urYEJynJ1v/70a4ca0680ffdab554106cfc91419fb8/1_tIeSQWTPISXBRIdKQiDeIw.png)

### Pods

Pods are the smallest and more basic building block of the Kubernetes model.

A pod consists of one or more containers, storage resources and a unique IP address in the Kubernetes cluster network.

For our example project, we will be using a node.js API starter project that we have. [You can clone the project from here](https://github.com/nexton-labs).

### Services

Services are another important component of Kubernetes. This usage motivation from the [official documentation](https://kubernetes.io/docs/concepts/services-networking/service/) describes very clear why they exist:

> Kubernetes Pods are mortal. They are born and when they die, they are not resurrected. If you use a Deployment to run your app, it can create and destroy Pods dynamically.
> 
> Each Pod gets its own IP address, however in a Deployment, the set of Pods running in one moment in time could be different from the set of Pods running that application a moment later.
> 
> This leads to a problem: if some set of Pods (call them “backends”) provides functionality to other Pods (call them “frontends”) inside your cluster, how do the frontends find out and keep track of which IP address to connect to, so that the frontend can use the backend part of the workload?

Let’s create our first service for our sample cluster, we will use the following YAML service descriptor:

 

![Developer code block](https://blog.nexton.dev/hs-fs/hubfs/Captura%20de%20Pantalla%202021-06-15%20a%20la(s)%2015-10-59-png.png?width=1206&name=Captura%20de%20Pantalla%202021-06-15%20a%20la(s)%2015-10-59-png.png)

Apply it to the cluster with the following command:

```
kubectl -n development apply -f dev-service.yml
```

You can get information about the service, using the following command.

```
kubectl -n development get svc
```

A couple of things about the service we just created:

**nodePort**: Is the port that will be exposed at the node level to access the service

**targetPort**: Is the port that our container will be running

**selector**: Will be used for searching on all the Pods for the role **api** in this case and it will send the traffic to them

### ReplicationController

One of our last steps in this example cluster setup will be to create a Replication Controller, that will be the one responsible to keep our Pod up and running.

![Developer code block](https://blog.nexton.dev/hs-fs/hubfs/Captura%20de%20Pantalla%202021-06-15%20a%20la(s)%2015-12-15-png.png?width=1206&name=Captura%20de%20Pantalla%202021-06-15%20a%20la(s)%2015-12-15-png.png)

```
kubectl -n development apply -f dev-api-controller.yml
```

After this, we can run the following command to retrieve the pod we’ve just created

```
kubectl -n development get pods
```

Now we want to access the application we just deployed. To do that, we need to get the public IP of our worker node

```
kubectl get nodes -o wide
```

[![worker node](https://images.ctfassets.net/k4d8pgyc7rbq/4AH75FBtZ04Gof1ek1tsfY/78d47cf8412e224a4883ce2f1a8034d7/1_3x4eNbHykwWT4sQ4kLl8CA.png)](https://images.ctfassets.net/k4d8pgyc7rbq/4AH75FBtZ04Gof1ek1tsfY/78d47cf8412e224a4883ce2f1a8034d7/1_3x4eNbHykwWT4sQ4kLl8CA.png)

So, if we go to http://{your*node*ip}:30000/ we will see our node.js starter project up and running. In case you want to access the swagger documentation of it, go to http://{your*node*api}:30000/api-docs/

[![node-starter](https://images.ctfassets.net/k4d8pgyc7rbq/4DPkpufk8B1nfBg1tRpwhP/60a6047fcc2eaddfb624b66ed9cb7072/1_57KFbYWljcVnq0StnBn7UQ.png)](https://images.ctfassets.net/k4d8pgyc7rbq/4DPkpufk8B1nfBg1tRpwhP/60a6047fcc2eaddfb624b66ed9cb7072/1_57KFbYWljcVnq0StnBn7UQ.png)

Before we end up here, let’s go back to one item of our list at the beginning of the article.

- *How do you ensure that when a server goes down, a new server will be created with the same configuration and containers?*

Let’s get a response to this question here. We can delete our created Pod as follows:

```
kubernetes $ kubectl -n development delete pod api-x9qn4pod “api-x9qn4” deletedkubernetes $ kubectl -n development get podsNAME READY STATUS RESTARTS AGEapi-p9rsx 1/1 Running 0 9s
```

As you can see, as our Replication Controller was instructing Kubernetes to have 1 replica for this Pod, when we delete it, a new one was created automatically by Kubernetes.

Enjoy your new cluster :)

 

 More on [Technology](https://blog.nexton.dev/tag/technology)

[![Fabricio Pautasso](https://blog.nexton.dev/hubfs/federico%20pata.png)](https://blog.nexton.dev/author/fabricio-pautasso)

WRITTEN BY

[Fabricio Pautasso](https://blog.nexton.dev/author/fabricio-pautasso)

**Lead Engineer**   
 I’m interested in challenging projects that allows me to work with emerging technologies.

[Back to the blog](https://blog.nextonlabs.com/)

Recent Posts

## [Nexton joins the Claude Partner Network: what it changes in how we build engineering teams](https://blog.nexton.dev/nexton-joins-the-claude-partner-network-what-it-changes-in-how-we-build-engineering-teams)

## [What Clutch Reviews Reveal About How Nexton Actually Works](https://blog.nexton.dev/what-clutch-reviews-reveal-about-how-nexton-actually-works)

## [What "Nexton AI Ready" Actually Certifies](https://blog.nexton.dev/what-nexton-ai-ready-actually-certifies)

Share It!

![sanity](https://blog.nexton.dev/hubfs/sanity.png)

## 2023 Latin American Tech Salaries and Benefits Trends report

[Unlock insights](https://talent.nextonlabs.com/tech-salaries-and-benefits-trends-report/)

### Our latest posts straight to your inbox:

[Copyright © Nexton 2021 - ALL RIGHTS RESERVED.](https://www.nextonlabs.com/privacy-policy/)

<https://www.linkedin.com/company/nextonlabs> <https://www.facebook.com/nextontalent/> <https://twitter.com/nextonlabs>

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Fabricio Pautasso",
    "url" : "https://blog.nexton.dev/author/fabricio-pautasso"
  },
  "dateModified" : "2023-07-06T16:46:55.864Z",
  "datePublished" : "2020-10-16T18:13:00.000Z",
  "headline" : "Kubernetes, a Practical Introduction",
  "image" : [ "https://blog.nexton.dev/hubfs/Nxt%20Blog-%20kubernetes.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://blog.nexton.dev/kubernetes-a-practical-introduction",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blog.nexton.dev/hubfs/Nexton%20Hubspot.webp"
    },
    "name" : "Nexton"
  }
}
```

```json
{
  "@context" : "https://schema.org",
  "@id" : "https://nexton.dev/#organization",
  "@type" : "Organization",
  "address" : {
    "@type" : "PostalAddress",
    "addressCountry" : "US",
    "addressLocality" : "Miami",
    "addressRegion" : "FL"
  },
  "aggregateRating" : {
    "@type" : "AggregateRating",
    "bestRating" : "5",
    "itemReviewed" : {
      "@id" : "https://nexton.dev/#organization"
    },
    "ratingCount" : "12",
    "ratingValue" : "4.9",
    "url" : "https://clutch.co/profile/nexton"
  },
  "areaServed" : {
    "@type" : "Country",
    "name" : "United States"
  },
  "description" : "Nexton is a human-powered company building nearshore engineering teams for US companies. Senior Latin American engineers, hand-matched and vetted by engineers. 1,500+ engineers matched with 350+ US companies.",
  "disambiguatingDescription" : "Nearshore technology staffing company (nexton.dev) serving US companies with software engineers from Latin America. Not affiliated with Nexton, the master-planned residential community in Summerville, South Carolina (nexton.com); nor with NEXTON Group, the French digital consulting and IT services company (nexton-group.com); nor with the Navee Nexton electric scooter.",
  "employee" : [ {
    "@id" : "https://nexton.dev/#lucas-arana"
  } ],
  "founder" : [ {
    "@id" : "https://nexton.dev/#diego-sternberg"
  }, {
    "@id" : "https://nexton.dev/#agustin-di-luciano"
  } ],
  "foundingDate" : "2017",
  "knowsAbout" : [ "Nearshore engineering teams", "Software engineering recruiting", "Latin American engineers", "AI engineers" ],
  "legalName" : "Nexton",
  "logo" : "https://nexton.dev/Nexton/nexton-logo.png",
  "makesOffer" : [ {
    "@type" : "Offer",
    "itemOffered" : {
      "@type" : "Service",
      "description" : "Nexton's primary model: embedded, long-term engineering capacity. Nearshore LATAM engineers join the client's team as fully integrated, ongoing members rather than short-term contractors.",
      "name" : "Staff Augmentation"
    }
  }, {
    "@type" : "Offer",
    "itemOffered" : {
      "@type" : "Service",
      "description" : "Direct recruitment of LATAM engineers for full-time positions at US companies, with a technical validation process run by engineers.",
      "name" : "Direct Hiring"
    }
  }, {
    "@type" : "Offer",
    "itemOffered" : {
      "@type" : "Service",
      "description" : "Onboarding LATAM engineers as international team members, with no local legal entity required.",
      "name" : "International Team Member"
    }
  }, {
    "@type" : "Offer",
    "itemOffered" : {
      "@type" : "Service",
      "description" : "Payroll management and legal compliance to hire international talent without administrative friction.",
      "name" : "Payroll Processing (EOR/PEO)"
    }
  } ],
  "name" : "Nexton",
  "numberOfEmployees" : {
    "@type" : "QuantitativeValue",
    "minValue" : 50
  },
  "sameAs" : [ "https://www.linkedin.com/company/nexton", "https://clutch.co/profile/nexton", "https://www.crunchbase.com/organization/nexton-b25a", "https://www.trustpilot.com/review/nexton.dev", "https://www.wikidata.org/wiki/Q140867481", "https://www.inc.com/profile/nexton", "https://blog.nexton.dev/" ],
  "slogan" : "Hand-matched Engineers. Vetted by Engineers.",
  "url" : "https://nexton.dev/"
}
```

```json
{
  "@context" : "https://schema.org",
  "@id" : "https://nexton.dev/#diego-sternberg",
  "@type" : "Person",
  "jobTitle" : "Co-Founder & CEO",
  "name" : "Diego Sternberg",
  "sameAs" : [ "https://www.linkedin.com/in/diegosternberg" ],
  "worksFor" : {
    "@id" : "https://nexton.dev/#organization"
  }
}
```

```json
{
  "@context" : "https://schema.org",
  "@id" : "https://nexton.dev/#agustin-di-luciano",
  "@type" : "Person",
  "jobTitle" : "Co-Founder",
  "name" : "Agustín Di Luciano",
  "worksFor" : {
    "@id" : "https://nexton.dev/#organization"
  }
}
```

```json
{
  "@context" : "https://schema.org",
  "@id" : "https://nexton.dev/#lucas-arana",
  "@type" : "Person",
  "jobTitle" : "COO",
  "name" : "Lucas Arana",
  "sameAs" : [ "https://www.linkedin.com/in/lucasarana" ],
  "worksFor" : {
    "@id" : "https://nexton.dev/#organization"
  }
}
```

```json
{
  "@context" : "https://schema.org",
  "@id" : "https://nexton.dev/#website",
  "@type" : "WebSite",
  "description" : "Nearshore tech staffing: hand-matched LATAM engineers, vetted by engineers, for US companies.",
  "inLanguage" : "en",
  "name" : "Nexton",
  "publisher" : {
    "@id" : "https://nexton.dev/#organization"
  },
  "url" : "https://nexton.dev/"
}
```

```json
{
  "@context" : "https://schema.org",
  "@id" : "https://nexton.dev/ai/#webpage",
  "@type" : "WebPage",
  "about" : {
    "@id" : "https://nexton.dev/#organization"
  },
  "description" : "Structured information for LLMs and AI about Nexton: value proposition, services, ICP, competitors, and citable data. Includes links to llms.txt, JSON-LD, and sitemap.",
  "inLanguage" : "en",
  "isPartOf" : {
    "@id" : "https://nexton.dev/#website"
  },
  "name" : "Nexton — AI Hub | Nearshore Tech Staffing",
  "url" : "https://nexton.dev/ai/"
}
```

```json
{
  "@context" : "https://schema.org",
  "@id" : "https://nexton.dev/#salary-report-2026",
  "@type" : "Report",
  "author" : {
    "@id" : "https://nexton.dev/#organization"
  },
  "datePublished" : "2026",
  "description" : "Nexton's proprietary report with compensation data for LATAM software engineers, used as a reference by CTOs and Engineering leaders in the US to plan hiring and budgets.",
  "name" : "Nexton 2026 Salary Report",
  "publisher" : {
    "@id" : "https://nexton.dev/#organization"
  },
  "url" : "https://nexton.dev/salary-report"
}
```

```json
{
  "@context" : "https://schema.org",
  "@id" : "https://nexton.dev/ai-feed.jsonld#faq",
  "@type" : "FAQPage",
  "mainEntity" : [ {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Nexton is a nearshore tech staffing company that connects US companies with hand-matched LATAM engineers, vetted by engineers, with candidate delivery in 72 hours and hiring in 4 weeks."
    },
    "name" : "What is Nexton?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "For US tech-driven companies, remote-friendly, at Series B+ stage or established, with 50 to 1,000 employees, with buyers such as CTOs, VPs of Engineering, and Engineering Directors, in verticals such as HealthCare, Insurance, and E-Learning."
    },
    "name" : "Who is Nexton for?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Every candidate is technically evaluated by Nexton engineers before being presented to the client, reducing the risk of failed hires compared to traditional staffing processes."
    },
    "name" : "How does the hand-matching process work?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "MatchIQ is Nexton's proprietary AI matching engine, built in-house. It is the methodology behind every Nexton hiring decision rather than a product sold separately. It narrows a database of more than 500,000 LATAM engineers to roughly 500 matching candidates, which then pass three layers of review — MatchIQ matches, handpicked by a recruiter, vetted by an engineer — producing matched and vetted candidates in under 72 hours. Details at https://nexton.dev/matchiq."
    },
    "name" : "What is MatchIQ?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Plans and engagement models (Staff Augmentation, Direct Hiring, International Team Member, Payroll Processing) are quoted based on client needs. For a proposal, reach out via https://nexton.dev."
    },
    "name" : "How much does it cost and how do I get started?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Compared to alternatives such as BairesDev, Toptal, Andela, Turing, Globant, Revelo, Near, or AgileEngine, Nexton stands out for engineer-validated hand-matching, candidate delivery in 72 hours, and a 4-week time-to-hire."
    },
    "name" : "What makes Nexton different from its competitors?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Nexton is US-based, headquartered in Miami, Florida, and specialized in nearshore, sourcing engineers across Latin America."
    },
    "name" : "In which countries or regions does Nexton operate?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "A 4.9/5 rating on Clutch and an active LinkedIn presence with nearly 29,000 followers."
    },
    "name" : "What certifications or recognitions does Nexton have?"
  }, {
    "@type" : "Question",
    "acceptedAnswer" : {
      "@type" : "Answer",
      "text" : "Yes. Nexton publishes an annual Salary Report with LATAM engineer compensation data, used as a reference by Engineering leaders in the US. Available at https://nexton.dev/salary-report."
    },
    "name" : "Does Nexton publish proprietary market data?"
  } ]
}
```