Netflix OSS – Common Runtime Services & Libraries

Netflix has released as open source software several of the tools, libraries and services they use to power microservices. The cloud platform is the foundation and technology stack for the majority of the services within Netflix. This platform consists of cloud services, application libraries and application containers.

Below you can find information about the services and libraries used by Netflix that were released as open source software.

Eureka

Eureka is a REST (Representational State Transfer) based service that is primarily used in the AWS cloud for locating services for the purpose of load balancing and failover of middle-tier servers. We call this service the Eureka Server. Eureka also comes with a Java-based client component, the Eureka Client, which simplifies the interactions with the service. The client also has a built-in load balancer that does basic round-robin load balancing. At Netflix, a much more sophisticated load balancer wraps Eureka to provide weighted load balancing based on several factors (like traffic, resource usage, error conditions, etc.) to provide superior resiliency.

Apart from playing a critical part in mid-tier load balancing, at Netflix, Eureka is used for the following purposes.

  • For aiding Netflix Asgard in:
    • Fast rollback of versions in case of problems, avoiding the relaunch of hundreds of instances which could take a long time
    • Rolling pushes, to avoid propagation of a new version to all instances in case of problems
  • For Cassandra deployments to take instances out of traffic for maintenance
  • For Memcached caching services to identify the list of nodes in the ring
  • For carrying other additional application specific metadata about services for various other reasons

Archaius

Archaius is a configuration management library with a focus on Dynamic Properties sourced from multiple configuration stores. It includes a set of configuration management APIs used by Netflix. It is primarily implemented as an extension of Apache’s Commons Configuration Library.

It provides the following functionalities:

  • Dynamic, Typed Properties
  • High throughput and Thread Safe Configuration operations
  • A polling framework that allows obtaining property changes of a Configuration Source
  • A Callback mechanism that gets invoked on effective/”winning” property mutations (in the ordered hierarchy of Configurations)
  • A JMX MBean that can be accessed via JConsole to inspect and invoke operations on properties
  • Out of the box, Composite Configurations (With ordered hierarchy) for applications (and most web applications willing to use convention based property file locations)
  • Implementations of dynamic configuration sources for URLs, JDBC and Amazon DynamoDB
  • Scala dynamic property wrappers

At the heart of Archaius is the concept of a Composite Configuration which can hold one or more Configurations. Each Configuration can be sourced from a Configuration Source such as: JDBC, REST, .properties file, etc.

Ribbon

Ribbon is an Inter Process Communication (remote procedure calls) library with built-in software load balancers. The primary usage model involves REST calls with various serialization scheme support.

Ribbon is a client-side IPC library that is battle-tested in cloud. It provides the following features:

  • Load balancing
  • Fault tolerance
  • Multiple protocol (HTTP, TCP, UDP) support in an asynchronous and reactive model
  • Caching and batching

There are three sub projects:

  • ribbon-core: includes load balancer and client interface definitions, common load balancer implementations, integration of client with load balancers and client factory
  • ribbon-eureka: includes load balancer implementations based on Eureka client, which is the library for service registration and discovery
  • ribbon-httpclient: includes the JSR-311 based implementation of REST client integrated with load balancers

Hystrix

Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.

Hystrix is designed to do the following:

  • Give protection from and control over latency and failure from dependencies accessed (typically over the network) via third-party client libraries
  • Stop cascading failures in a complex distributed system
  • Fail fast and rapidly recover
  • Fallback and gracefully degrade when possible
  • Enable near real-time monitoring, alerting, and operational control

Karyon

Karyon is a framework and library that essentially contains the blueprint of what it means to implement a cloud-ready web service. All the other fine grained web services and applications that form our SOA graph can essentially be thought of as being cloned from this basic blueprint.

Karyon can be thought of as a nucleus that contains the following main ingredients:

  • Bootstrapping , dependency and Lifecycle Management (via Governator)
  • Runtime Insights and Diagnostics (via karyon-admin-web module)
  • Configuration Management (via Archaius)
  • Service discovery (via Eureka)
  • Powerful transport module (via RxNetty)

Governator

Governator is a library of extensions and utilities that enhance Google Guice to provide classpath scanning and automatic binding, lifecycle management, configuration to field mapping, field validation and parallelized object warmup.

Prana

Pana is a sidecar for your NetflixOSS based services. It simplifies the integration with NetflixOSS services since it exposes Java based client libraries of various services like Eureka, Ribbon, and Archaius over HTTP. It makes it easy for applications especially written in Non-JVM languages to exist in the NetflixOSS eco-system.

Prana is a Karyon & RxNetty based application that exposes features of java-based client libraries of various NetflixOSS services over an HTTP API. It is conceptually “attached” to the main application and complements it by providing features that are otherwise available as libraries within a JVM-based application.

Prana is used extensively within Netflix alongside applications built in non-jvm programming language like Python and NodeJS or services like Memcached, Spark, and Hadoop.

Between Prana’s features we can mention:

  • Advertising applications via the Eureka Service Discovery Service
  • Discovery of hosts of an application via Eureka
  • Health Check of services
  • Load Balancing http requests via Ribbon
  • Fetching Dynamic Properties via Archaius

Zuul

Zuul is an edge service that provides dynamic routing, monitoring, resiliency and security among other things. It is the front door for all requests from devices and web sites to the backend of the Netflix streaming application. As an edge service application, Zuul is built to enable dynamic routing, monitoring, resiliency and security. It also has the ability to route requests to multiple Amazon Auto Scaling Groups.

Zuul uses a range of different types of filters that enables us to quickly and nimbly apply functionality to our edge service. These filters help the people from Netflix to perform the following functions:

  • Authentication and Security – identifying authentication requirements for each resource and rejecting requests that do not satisfy them
  • Insights and Monitoring – tracking meaningful data and statistics at the edge in order to give us an accurate view of production
  • Dynamic Routing – dynamically routing requests to different backend clusters as needed
  • Stress Testing – gradually increasing the traffic to a cluster in order to gauge performance
  • Load Shedding – allocating capacity for each type of request and dropping requests that exceed the limit
  • Static Response handling – building some responses directly at the edge instead of forwarding them to an internal cluster
  • Multiregion Resiliency – routing requests across AWS regions in order to diversify our ELB usage and move our edge closer to our members

At the center of Zuul is a series of Filters that are capable of performing a range of actions during the routing of HTTP requests and responses.
The following are the key characteristics of a Zuul Filter:

  • Type: most often defines the stage during the routing flow when the Filter will be applied (although it can be any custom string)
  • Execution Order: applied within the Type, defines the order of execution across multiple Filters
  • Criteria: the conditions required in order for the Filter to be executed
  • Action: the action to be executed if the Criteria is met

Zuul provides a framework to dynamically read, compile, and run these Filters. Filters do not communicate with each other directly – instead they share state through a RequestContext which is unique to each request.

Zuul contains multiple components:

  • zuul-core– library which contains the core functionality of compiling and executing Filters
  • zuul-simple-webapp– webapp which shows a simple example of how to build an application with zuul-core
  • zuul-netflix– library which adds other NetflixOSS components to Zuul – using Ribbon for routing requests, for example
  • zuul-netflix-webapp – webapp which packages zuul-core and zuul-netflix together into an easy-to-use package

Netflix OSS – Build and Delivery Tools Overview

Between the Build and Delivery tools released by Netflix as part of the Netflix OSS platform you can find build resources such as Nebula (which makes Gradle plugins easy to build, test and deploy) and tools to manage resources in AWS and to support deployments to this platform.

Below you can find a brief description of some of the build and delivery tools released by Netflix.

Nebula

The nebula-plugins organization was set up to facilitate the generation, governance, and releasing of Gradle plugins. It is done by providing a space to host plugins, in SCM, CI, and a Repository. A single GitHub organization is used, for which anyone or any plugin can be added. Cloudbees jobs are created for every plugin to provide a standard set of jobs. Releases are posted to bintray, proxied to JCenter and synced to Maven Central.

Aminator

Aminator is a tool for creating EBS AMIs. This tool currently works for CentOS/RedHat Linux images and is intended to run on an EC2 instance.
It creates a custom AMI from just:

  • A base ami ID
  • A link to a deb or rpm package that installs your application.

This is useful for many AWS workflows, particularly ones that take advantage of auto-scaling groups.

Asgard

Asgard is a web-based tool for managing cloud-based applications and infrastructure. It offers a web interface for application deployments and cloud management in Amazon Web Services (AWS).

Netflix has been using Asgard for cloud deployments since early 2010. It was initially named the Netflix Application Console.

Netflix OSS – Big Data Tools Overview

Behind the scenes, Netflix has a rich ecosystem of big data technologies facilitating their algorithms and analytics. They use and contribute to broadly-adopted open source technologies including Hadoop, Hive, Pig, Parquet, Presto, and Spark. Additionally, they have developed and contributed some additional tools and services which have further elevated their data platform.

Below you can find information about some tools of the Netflix OSS platform that offer functionalities associated to big data.

Genie

Genie is a federated job execution engine developed by Netflix. Genie provides REST-ful APIs to run a variety of big data jobs like Hadoop, Pig, Hive, Presto, Sqoop and more. It also provides APIs for managing many distributed processing cluster configurations and the commands and applications which run on them.

From the perspective of the end-user, Genie abstracts away the physical details of various (potentially transient) computational resources (like YARN, Spark, Mesos clusters etc.). It then provides APIs to submit and monitor jobs on these clusters without users having to install any clients themselves or know details of the clusters and commands.

A big advantage of this model is the scalability that it provides for client resources. This solves a very common problem where a single machine is configured as an entry point to submit jobs to large clusters and the machine gets overloaded. Genie allows the use of a group of machines which can increase and decrease in number to handle the increasing load, providing a very scalable solution.

Within Netflix it is primarily used to handle scaling out jobs for their big data platform in the cloud, but it doesn’t require AWS or the cloud to benefit users.

Inviso

Inviso is a lightweight tool that provides the ability to search for Hadoop jobs, visualize the performance, and view cluster utilization.

This tool is based on the following components:

  • REST API for Job History: REST endpoint to load an entire job history file as a json object
  • ElasticSearch: Search jobs and correlate Hadoop jobs for Pig and Hive scripts
  • Python Scripts: Scripts to index job configurations into ElasticSearch for querying. These scripts can accommodate a pub/sub model for use with SQS or another queuing service to better distribute the load or allow other systems to know about job events.
  • Web UI: Provides an interface to search and visualize jobs and cluster data

Lipstick

Lipstick combines a graphical depiction of a Pig workflow with information about the job as it executes, giving developers insight that previously required a lot of sifting through logs (or a Pig expert) to piece together.

Aegisthus

Aegisthus is a Bulk Data Pipeline out of Cassandra. It implements a reader for the SSTable format and provides a map/reduce program to create a compacted snapshot of the data contained in a column family.

Netflix OSS Overview

Netflix is considered one of the biggest cloud applications out there. As such, the people at Netflix have faced many different kinds of challenges trying to avoid failures in their service. Over time, they implemented different tools to support and improve their cloud environment, making the Netflix application more reliable, fault-tolerant and highly available.

The really good news is that Netflix has made some of these tools open source. There are now tools available to make a cloud environment more reliable coming from a company that is using them in a huge infrastructure. One thing to consider is that Netflix utilizes AWS for services and content delivery and, as a consequence, some of the implemented tools provide functionalities for this particular cloud environment. However, other tools offer more generic features that can be used in other environments.

It is important to consider that, although Netflix has embraced the open source concept, the shared code provides solutions for computing. The company is not sharing any of its innovations and technology around streaming video.

Open Source tools

The different tools released as part of the Netflix OSS platform can be categorized according to the functionality they provide. In this section you can find a brief description of these categories.

Additionally, you can find further information about the different categories and the associated tools in the blog posts that are referenced at the end of each category description. It is important to keep in mind that, at this point, more than 50 projects can be found in the Netflix OSS GitHub repository. As a consequence, we list and describe only the main tools corresponding to each category.

Big Data Tools

Behind the scenes, Netflix has a rich ecosystem of big data technologies facilitating their algorithms and analytics. They use and contribute to broadly-adopted open source technologies including Hadoop, Hive, Pig, Parquet, Presto, and Spark. Additionally, they have developed and contributed some additional tools and services which have further elevated their data platform.

To know more about the main tools of the Netflix OSS platform that offer functionalities associated to big data, please check out the Netflix OSS – Big Data tools Overview blog post.

Build and Delivery Tools

In this category you can find build resources such as Nebula, which makes Gradle plugins easy to build, test and deploy. Additionally, this category includes tools to manage resources in AWS and to support deployments to this platform.

In the Netflix OSS – Build and Delivery Tools Overview blog post you can find more information about the available tools.

Common Runtime Services & Libraries

In this category you can find tools, libraries and services to power microservices. The cloud platform is the foundation and technology stack for the majority of the services within Netflix. This platform consists of cloud services, application libraries and application containers.

In this category you can find tools, libraries and services to power microservices. The cloud platform is the foundation and technology stack for the majority of the services within Netflix. This platform consists of cloud services, application libraries and application containers.

Take a look at the Netflix OSS – Common Runtime Services & Libraries Overview blog post to know more about the services and libraries used by Netflix that were released as open source software.

Data Persistence Tools

Handling a huge amount of data operations per day required Netflix to improve existent open source software with their own tools. The cloud usage in Netflix and the scale at which it consumes/manages data has required them to build tools and services that enhance the used datastores.

In this category you will find tools to store and serve data in the cloud. Take a look at the Netflix OSS – Data Persistence Tools Overview blog post to read more about these tools.

Insight, Reliability and Performance Tools

In this category you can find tools to get Operation Insight about an application, take different kind of metrics and validate reliability by ensuring that the application can support different kinds of failures.

In the Netflix OSS – Insight, Reliability and Performance Tools Overview blog post you can find more information about these tools.

Security Tools

Netflix has released different security tools and solutions to the open source community. The security-related open source efforts generally fall into one of two categories:

  • Operational tools and systems to make security teams more efficient and effective when securing large and dynamic environments
  • Security infrastructure components that provide critical security services for modern distributed systems.

Check out the Netflix OSS – Security Tools Overview blog post to find further information about some of the security tools released by Netflix.

Getting Started

There are different ways to start working with the Netflix OSS tools.

The Zero to Cloud workshop offers a tutorial focused on bringing up the Netflix OSS stack on a fresh AWS account, in a similar style to how Netflix does it internally. To try it, you would need to have an AWS account and the required resources to set up the infrastructure.

Another way to start playing with the Netflix OSS tools is to analyze sample applications such as IBM ACME Air and Flux Capacitator. These applications use several of the Netflix OSS tools, so they could be useful to understand how the tools can be used outside Netflix. In this case, you may also need to have the proper cloud infrastructure to set up the tools and execute them.

Finally, the fastest way to test some of the Netflix OSS tools is to use ZeroToDocker. If you are familiar with Docker, you can use the Docker images provided by Netflix to get some of the tools up and running in just a few minutes. Additionally, since some of the tools do not require AWS to work, you can run and test them in other cloud environments or locally.

Microsoft Azure Media Services SDK for Java v0.8.0 released and new samples available

Azure Media Services SDK for Java

This week the Azure SDK team published new releases of the Azure SDK for Java packages that contain updates and support for more Microsoft Azure Platform Services features. You can find the full list of packages at http://search.maven.org/#search|ga|1|g:”com.microsoft.azure”.

In particular, there was a new release (v.0.8.0) of the Azure Media Services SDK for Java that contains lots of new features such as Content Protection (Dynamic Encryption) and support for more entities/operations (StreamingEndpoint, EncodingReservedUnitType, StorageAccount, etc.). Below you can find the full change log for this release.

Here at Southworks I’ve been working with Emanuel Vecchio on preparing some Java console sample applications showing how to use the new features recently added to the Azure Media Services SDK for Java. As a result, we created the azure-sdk-for-media-services-java-samples GitHub repository containing the following samples:

Media Services SDK for Java sample projects in Eclipse

 

v0.8.0 Change Log

 

Enjoy!

manifoldjs

manifoldjsWe recently contributed to the creation of manifoldJS, a tool that helps web developers to bring their websites to the app stores with minimal effort, giving them the chance to reach more users, platforms and devices without having to change the workflow, content and deployment model they use today on their websites.

manifoldJS uses the W3C Manifest for Web Apps (a standard that describes the metadata of a website) to create apps for a number of platforms, including iOS, Android, Windows, Firefox OS and Chrome OS. There are two ways to generate apps with manifoldJS: through the app generator’s wizard steps of the manifoldjs.com site, or installing and running the NodeJS CLI Tool locally.

The tool was introduced at //BUILD/ 2015’s Day 2 Keynote, where Steve Guggenheimer (Microsoft’s Chief Technical Evangelist) and John Shewchuck (Technical Fellow and the CTO for the Microsoft Developer Platform) showed how to use manifoldJS to generate web apps for the Shiftr website.

MeetUp: Machine Learning – Buscándole el sentido a nuestros datos

Estamos organizando un nuevo Meetup dentro del grupo “Buenos Aires Cloud Computing” sobre Machine Learning con Microsoft Azure.

Cuándo y dónde?

Este meetup será el Miércoles 19 de Agosto del 2015 en las oficinas de Southworks (Perú 375 1er Piso, CABA).

Sobre qué trata?

La idea será ver una introducción a Machine Learning, ver las herramientas de Microsoft para hacer nuestros proyectos de Machine Learning y desarrollar un caso práctico de como podemos usar esta tecnología para que nuestros datos tengan sentido y valor.

Para más información, pueden ir viendo los posts que estuvimos escribiendo en nuestro blog:

Dónde me inscribo?

Pueden inscribirse en la web de MeetUp en este enlace.

Los esperamos!

Diego

Using Data Factory in a real world scenario

The purpose of this post is to show you the features of Data Factory and the kind of scenarios you can create with it.
Remember our Machine Learning Twitter Sentiment Analysis post? That service can be used to generate more complex scenarios.

Data Factory can help us create a scenario where all our related data converges, even from different sources. The data can be prepared, transformed and analyzed. Data factory lets you compose services into managed data flow pipelines to transform data using HDInsight, Azure Batch, Azure Machine Learning, and more to generate relevant information.

data-factory-diagram

Let’s see how all our pieces can be combined to generate useful information.

Our scenario is about a company that just released a marketing campaign and wants to leverage the Twitter response, analyze, aggregate, and identify the positive and negative sentiments of its customers.

We are using this sample as a base for creating the scenario. If you want to try it, just follow the instructions found in the link.

The raw tweets stored in Azure Blob storage will be read and aggregated to generate the TweetCountPerHour, TweetCountPerDay and the TotalTweetCount datasets. The tweets will then be sent to the Sentiment Analysis Machine Learning model to be classified as Positive, Negative or Neutral. Finally, the sentiment for individual tweets will be aggregated to determine the overall sentiment, which is the number of tweets with Positive, Negative and Neutral Sentiment.

Having this information will allow us to determine whether or not the campaign was successful.

The following image shows the diagram of the data factory scenario.

solution diagram

You can see how the first input of the process is the raw tweets, and how data is being transformed and then moved to SQL Azure.

If we inspect the generated data in the Azure SQL Server, we can see the following results.

data-factory-output

In the results we can see that based on the gathered tweets, almost 60% of people are tweeting positively about our brand, and only 13% show negative sentiment. We can conclude, based on this data, that our new campaign has been successful.

Hope this is useful to you.

Diego

Getting ready for the “Programming in HTML5 with JavaScript and CSS3” Microsoft Exam

Knowing HTML, CSS and JavaScript is essential to any web developer, and the Microsoft Exam 70-480 “Programming in HTML5 with JavaScript and CSS3” allows you to become certified in those technologies. Although in my opinion the exam is not a reliable measure of how well you can program in those languages (this is a debatable topic, but I won’t talk about this here), in my case it provided the motivation I needed to study something I had been postponing.

I had some basic knowledge of HTML and CSS, but JavaScript was new to me. To get trained, I read back to back the Official Training guide (at an average of two chapters a day, I finished it in two weeks). I found it to be an excellent book; it provides both theoretical information as well as practice exercises and code samples; not to mention the quizzes at the end of each lesson to test your knowledge. It has a few disadvantages though: there are a few errors here and there, and it doesn’t cover 100% of the exam topics. Oh, and the black-and-white code snippets were a pain to read; I recommend buying the eBook format to copy and paste snippets in your favorite IDE to try them out (or use jsfiddle).

Anyway, I realized that the book didn’t cover everything on the exam after I compared the contents to the Skills tested in the exam. You need to dig deeper than the book, and of course the internet is an excellent source.

Here are a few topics I had to review before taking the exam:

  • CSS animations with the “transition” and “transform” properties. It’s not covered at all in the training guide, and for the exam you need to know for instance how to rotate an element counter-clockwise. Also, it’s not an exam topic but it’s worth knowing about the existance of keyframes, which allow you to specify intermediate steps for your animations (something you can’t do with transitions).
  • CSS exclusions, which basically only work in IE and it’s a way to specify how content flows around an element (like a “float”).
  • The JavaScript stuff, i.e. how the “this” keyword really works in the context of a script, a function, an object, and an event handler. (This is a big topic and can take some time to grasp if you are new to JavaScript – I recommend this article).
  • More JavaScript stuff: call() versus apply() functions to force a certain meaning to the “this” keyword, and the various ways of attaching event handlers to elements.
  • How to do layouts with columns, grids, and flexible boxes. Again, these aren’t covered in the book, and they’re quite large topics. Basically, the multi-column properties are just what they sound like; grids are like tables and they only work in Internet Explorer, and flexible boxes give a “container” element the ability to alter its child elements’ width and height to best fill the available space.
  • Know how to style text with underlines, sizes, shadows, etc. Also, know how to put shadows and curved borders around boxes with the box-shadow and border-radius CSS properties.
  • CSS positioning. For me it was one of the hardest concepts in the exam, and it is a key concept of CSS, so you’d better spend some time on it. Here’s my quick summary:
    • Static positioning tells the browser to put the element where it should go according to the HTML. With this scheme, setting the “top”, “left”, etc. values don’t make any sense.
    • Relative positioning takes the element, places it where it should go according to the HTML, and then moves it relative to this position.
    • Absolute positioning tells the browser to *remove* the element from the HTML flow and put it relative to the first non-static element. If all the parent elements are static, it will position it relative to the browser window.
    • Fixed positioning is like absolute positioning, but always in relation to the browser window.
  • How to make calls to web services using AJAX, in all four combinations: sync, async, with jQuery and without jQuery. Also, know how to be cross-browser compatible without jQuery (i.e. using ActiveX objects instead of XMLHttpRequest objects).
  • How to implement classes and inheritance in JavaScript. Coming from C#, this was a huge move for me and it was not intuitive at first. The fact that you define a class by wrapping it inside a function blew my mind 🙂
  • Web workers. Know how they work, i.e. it’s a script placed in a different file that executes in the background, and it doesn’t have access to the DOM, so you communicate with it through bidirectional messages. Also, know how to terminate them from the client and within the worker itself.
  • How to get the location of a user using the geolocation APIs, in the two flavors: one-time requests or continuous updates.
  • The RegEx object in JavaScript, and how to write patterns to test strings against them, so as to validate user input. Regexes are a big topic on itself so you should devote some time to it if you’re new to it.
  • Media queries, also not explained in the book.

And here are a few tips that got me through my learning:

  •  The first thing you should do before preparing for the exam is actually knowing what the exam is about and identify the areas you need to work on and which areas are new to you. For this, read the Skills section on the exam description.
  • When in doubt, ask StackOverflow. I found it especially useful to search for the differences between topics, e.g. the difference between “return true” and “return false” in event handlers, the different jQuery methods to set the content of an element (val(), text() and html()), the meaning of the “accept”, “dataType” and “contentType” parameters in AJAX…
  • Do the practice exercises of the book. They are not just “copy and paste” instructions; they actually tell you, for example, “implement a function that will take user input and perform this and that” and then show you the code to do it; you can code it yourself and then “peek” at the answer. Also, try to add your own functionality to the sites you create.
  • Have a look at caniuse.com to see what features and APIs are available in each browser.
  • To learn CSS: If you find a site you like or with an interesting layout, try copying it to see what you come up with.

Happy studying and good luck in the exam!

NodeBots Day 2015 – Medellin

El sábado pasado tuve la oportunidad de participar del NodeBots Day 2015 en Medellin @NodeBotsMed. Fue un día realmente muy divertido y el primero de estos eventos en los que participo.

Venue

El lugar donde se realizó el evento me sorprendió gratamente. El edificio de RutaN es bellísimo. Con el estilo que se repite en todo Medellín, esta coloreado de mucho verde y naturaleza.

NodeBots Day Medellin - RutaN

Introduccion

Siguiendo el espíritu de NodeBots Day no hubo una charla formal sino mas bien una introducción por parte de nuestro facilitador @Julian_Duque que nos contó un poco sobre los origenes de Javascript Robotics, un poco de la Serial Port library y el modulo Johnny-Five.

Manos a la obra

Rapidamente nos pusimos todos manos a la obra y provistos de unos SumoBots kit comenzamos armando los sumobots. Los Sumobots son unos modelos open source especialmente diseñados para los NodeBots Day, fáciles de construir, de ensamblar y muy económicos. Podrá parecerles exagerado, pero hacía mucho tiempo que no realizaba trabajos manuales con tecnología que ya nos resulta desconocida: Cables, Tornillos, Taladros, Trinchetas, Pegamento, Lijas!!

(Source: MeetupJS)

Firmware y Software

Para proveer un poco de firmware a los NodeBots y programarlos para jugar un rato pudimos disponer de unos Dev Kits de ElectricImp y usamos el Imp IDE para flashear los modulitos. Esto ultimo, toda una experiencia aparte que hace sonreír al niño nerd interior que todos tenemos!

Internet of Things

ElectricImp hace muy facil la implementacion de una solucion de IoT. Basicamente permite conectar los modulos (Devices) via WIFI con la nube de ‘Agents’ de ElectricImp. Para esto usamos el Imp IDE para subir las librerías tyrion y imp-io para poder manejar los NodeBots remotamente.

 

ElectricImp Architecture

Sumo

Que puede ser más entretenido de hacer un sábado por la tarde que unas luchas de sumo con NodeBots manejados remotamente desde la nube. No hay nada mas que decir, dejo alguna fotos subidas por algunos usuarios a la pagina del Meetup NodeBots

Los nuevos amigos del equipo de SumoBots: Carlos Alberto Mesa Rivillas, Elias Quintero y Alejandro Berrío.

NodeBots Day Medellin - Equipo

Mas para leer