SlideShare a Scribd company logo
1 of 18
Download to read offline
Golang Skills
What we know so far…
Sofiane Imadali, Ayoub Bousselmi
21/02/2018
Agenda
 When, Why and How ?
 Golang Projects
 Play-with-Docker (open source project)
 VNF API (open source project from scratch)
 Wall and Wall API (open source project, api from scratch)
 Clutch (open source project, from scratch)
 Prometheus Integration (exporters development)
 Next steps…
 Kubernetes and CRD
2/21/2019 Golang Skills 2
When, Why and How ?
2/21/2019 Golang Skills 3
When, Why and How ?
2/21/2019 Golang Skills 4
When
 2016
 Go version: 1.7
Why
 Docker
 RANaaS project: beego based Swagger API (OpenAPI)
 integrations with MangoDB
 fake data generator like Joke2k/faker in Python:
When, Why and How ?
2/21/2019 Golang Skills 5
When
 2017
 Go version: 1.7, 1.8, 1.9
Why
 Docker with Play-with-Docker project
 Wall and Wall API
 VNF API to integrate Dockerized OpenAirInterface
 AccessPoint API to integrate with hostapd and dhcpd
When, Why and How ?
2/21/2019 Golang Skills 6
When
 2018
 Go version: 1.8, 1.9, 1.10
Why
 Docker with Play-with-Docker project
 Docker-machine driver for the PlayGround (PWD)
 Clutch: metrics exporter from PCP to Kafka
 All exporters with Prometheus (Web, Postgres),
Alertmanager
 GitTar: git clone from a repo (for CI)
Golang Projects
2/21/2019 Golang Skills 7
Play-with-Docker
2/21/2019 Golang Skills 8
Goal
 Ephemeral environment to play with docker
 Part of the Plug’in sandbox
Implementation
 Gorilla Mux: API routes and handlers
 Docker SDK (official API from github)
 HTML/CSS/JavaScript/WebSockets
connected to golang backend
Main libraries
 gorilla/mux
 docker/docker/api
 prometheus/promhttp
Links
 https://gitlab.forge.orange-labs.fr/lucy/playground
Docker Machine Driver
2/21/2019 Golang Skills 9
Goal
 Use docker-machine to interact with
PlayGround
 Create containers (DINDs) in the PlayGround
Implementation
 Docker-machine SDK
Main libraries
 docker/machine
Links
 https://gitlab.forge.orange-labs.fr/lucy/playground-driver
VNF API
2/21/2019 Golang Skills 10
Goal
 Wrap binaries and make them HTTP
attainable
 Inspired by Ligato project
Implementation
 Gin-gonik for swagger API
 Logrus for logging
 Templating for different configurations
Main libraries
 sirupsen/logrus
 gin-gonic/gin
 savaki/swag
Links
 https://www.sdxcentral.com/products/ligato/
Wall and Wall API
2/21/2019 Golang Skills 11
Goal
 Make something like Gist (Github) for the
Sandbox users
Implementation
 Jekyll + Nginx
 Golang based API + Templating for posts
Main libraries
 gorilla/mux + gorilla/handlers
 urfave/negroni
Links
 https://gitlab.forge.orange-labs.fr/lucy/wall-api
 https://gitlab.forge.orange-labs.fr/lucy/wall
Clutch
2/21/2019 Golang Skills 12
Goal
 Create small probe to extract metrics from
PCP to Kafka
Implementation
 Kafka and PCP integration
 Logrus for logging
 Viper for configuration management
Main libraries
 Shopify/sarama
 sirupsen/logrus
 spf13/viper
Links
 https://gitlab.forge.orange-labs.fr/tqwt7730/clutch
Prometheus Integration
2/21/2019 Golang Skills 13
Goal
 Export metrics from PlayGround to
Prometheus
 Create an observable deployment on
OpenWatt
Implementation
 Using official golang Http client
 Rebuild Docker images from source code
Main libraries
 prometheus/promhttp
Links
 https://gitlab.forge.orange-labs.fr/tqwt7730/prom-bbe
GitTar
2/21/2019 Golang Skills 14
Goal
 Clone a git project from remote repo
 Use BasicAuth credentials
Implementation
 Swagger REST API
 Combine with AtomDocs (Sandbox) for
documentation CI/CD
Main libraries
 gopkg.in/src-d/go-git.v4
 gin-gonic/gin
 savaki/swag
Links
 https://gitlab.forge.orange-labs.fr/tqwt7730/gittar
Beego
2/21/2019 Golang Skills 15
Goal
 Create an API for integration for the Radio
Access Network as a Service (RANaaS) project
Implementation
 Generate basic REST API micro-service
skeleton
Main libraries
 astaxie/beego
Links
 https://beego.me/
Next steps…
2/21/2019 Golang Skills 16
Kubernetes and CRD
2/21/2019 Golang Skills 17
 Play with Kubernetes
 https://github.com/play-with-docker/play-with-docker/tree/k8s
 Deploy K8S using Vagrant
 https://github.com/sofianinho/vagrant-kube
 CRD: we can collaborate !
 Operator Framework:
https://github.com/operator-framework
Thanks
sofiane.imadali@orange.com
ayoub.bousselmi@orange.com

More Related Content

What's hot

Golang, Future of Programming Language.
Golang, Future of Programming Language.Golang, Future of Programming Language.
Golang, Future of Programming Language.Sunil Yadav
 
Why companies like Google, Alibaba and UOL choose Flutter
Why companies like Google, Alibaba and UOL choose FlutterWhy companies like Google, Alibaba and UOL choose Flutter
Why companies like Google, Alibaba and UOL choose FlutterGeison Goes
 
Flutter beers and pizza
Flutter beers and pizzaFlutter beers and pizza
Flutter beers and pizzaJon Durán
 
Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3Craig Rodrigues
 
C language in our world 2016
C language in our world 2016C language in our world 2016
C language in our world 2016Juraj Michálek
 
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonEvoletTechnologiesCo
 
Building Beautiful Apps using Google Flutter
Building Beautiful Apps using Google FlutterBuilding Beautiful Apps using Google Flutter
Building Beautiful Apps using Google FlutterAhmed Abu Eldahab
 
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)Pedro Moreira da Silva
 
C++ and Software Engineering 2015
C++ and Software Engineering 2015C++ and Software Engineering 2015
C++ and Software Engineering 2015Juraj Michálek
 
Intro to Flutter
Intro to FlutterIntro to Flutter
Intro to FlutterShady Selim
 
How to approach building GUIs using PyQT
How to approach building GUIs using PyQTHow to approach building GUIs using PyQT
How to approach building GUIs using PyQTJerlyn Manohar
 
C language in our world 2015
C language in our world 2015C language in our world 2015
C language in our world 2015Juraj Michálek
 
Kotlin multiplataforma
Kotlin multiplataformaKotlin multiplataforma
Kotlin multiplataformaGeison Goes
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLangNVISIA
 
Intro to Flutter SDK
Intro to Flutter SDKIntro to Flutter SDK
Intro to Flutter SDKdigitaljoni
 
Ready, set, go! An introduction to the Go programming language
Ready, set, go! An introduction to the Go programming languageReady, set, go! An introduction to the Go programming language
Ready, set, go! An introduction to the Go programming languageRTigger
 

What's hot (20)

Golang, Future of Programming Language.
Golang, Future of Programming Language.Golang, Future of Programming Language.
Golang, Future of Programming Language.
 
Why companies like Google, Alibaba and UOL choose Flutter
Why companies like Google, Alibaba and UOL choose FlutterWhy companies like Google, Alibaba and UOL choose Flutter
Why companies like Google, Alibaba and UOL choose Flutter
 
Flutter beers and pizza
Flutter beers and pizzaFlutter beers and pizza
Flutter beers and pizza
 
Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3Migrating python.org to buildbot 9 and python 3
Migrating python.org to buildbot 9 and python 3
 
C language in our world 2016
C language in our world 2016C language in our world 2016
C language in our world 2016
 
Advantages of Python Learning | Why Python
Advantages of Python Learning | Why PythonAdvantages of Python Learning | Why Python
Advantages of Python Learning | Why Python
 
Building Beautiful Apps using Google Flutter
Building Beautiful Apps using Google FlutterBuilding Beautiful Apps using Google Flutter
Building Beautiful Apps using Google Flutter
 
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
GitLab: One Tool for Software Development (2018-02-06 @ SEIUM, Braga, Portugal)
 
C++ and Software Engineering 2015
C++ and Software Engineering 2015C++ and Software Engineering 2015
C++ and Software Engineering 2015
 
Intro to Flutter
Intro to FlutterIntro to Flutter
Intro to Flutter
 
How to approach building GUIs using PyQT
How to approach building GUIs using PyQTHow to approach building GUIs using PyQT
How to approach building GUIs using PyQT
 
C language in our world 2015
C language in our world 2015C language in our world 2015
C language in our world 2015
 
Besut Kode Challenge 1
Besut Kode Challenge 1Besut Kode Challenge 1
Besut Kode Challenge 1
 
Kotlin multiplataforma
Kotlin multiplataformaKotlin multiplataforma
Kotlin multiplataforma
 
Go dla elektronika
Go dla elektronikaGo dla elektronika
Go dla elektronika
 
Flutter vs React Native
Flutter vs React NativeFlutter vs React Native
Flutter vs React Native
 
Introduction to GoLang
Introduction to GoLangIntroduction to GoLang
Introduction to GoLang
 
Intro to Flutter SDK
Intro to Flutter SDKIntro to Flutter SDK
Intro to Flutter SDK
 
Ready, set, go! An introduction to the Go programming language
Ready, set, go! An introduction to the Go programming languageReady, set, go! An introduction to the Go programming language
Ready, set, go! An introduction to the Go programming language
 
Flutter bus 2018
Flutter bus 2018Flutter bus 2018
Flutter bus 2018
 

Similar to Golang skills pre-session

Go for Mobile Games
Go for Mobile GamesGo for Mobile Games
Go for Mobile GamesTakuya Ueda
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxIgalia
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using GolangSeongJae Park
 
GDGSCL - Docker a jeho provoz v Heroku a AWS
GDGSCL - Docker a jeho provoz v Heroku a AWSGDGSCL - Docker a jeho provoz v Heroku a AWS
GDGSCL - Docker a jeho provoz v Heroku a AWSLadislav Prskavec
 
Docker opens the Doors for IoT
Docker opens the Doors for IoTDocker opens the Doors for IoT
Docker opens the Doors for IoTDieter Reuter
 
Mobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse BindingMobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse BindingTakuya Ueda
 
2012 09-04 smart devcon - boot to the web, boot 2 gecko
2012 09-04 smart devcon - boot to the web, boot 2 gecko2012 09-04 smart devcon - boot to the web, boot 2 gecko
2012 09-04 smart devcon - boot to the web, boot 2 geckoMartin de Keijzer
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndreas Jakl
 
When, how & why use golang in 2021 go benefits & use cases
When, how & why use golang in 2021  go benefits & use casesWhen, how & why use golang in 2021  go benefits & use cases
When, how & why use golang in 2021 go benefits & use casesKaty Slemon
 
Efficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVMEfficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVMQAware GmbH
 
Docker Timisoara: Dockercon19 recap slides, 23 may 2019
Docker Timisoara: Dockercon19 recap slides, 23 may 2019Docker Timisoara: Dockercon19 recap slides, 23 may 2019
Docker Timisoara: Dockercon19 recap slides, 23 may 2019Radulescu Adina-Valentina
 
Blackberry_runtime_for_android_apps
Blackberry_runtime_for_android_appsBlackberry_runtime_for_android_apps
Blackberry_runtime_for_android_appsDroidcon Berlin
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitIgalia
 
Assisted code review with source{d} lookout
Assisted code review with source{d} lookoutAssisted code review with source{d} lookout
Assisted code review with source{d} lookoutsource{d}
 
DevOps Indonesia #5 - The Future of Containers
DevOps Indonesia #5 - The Future of ContainersDevOps Indonesia #5 - The Future of Containers
DevOps Indonesia #5 - The Future of ContainersDevOps Indonesia
 
Getting Your Hooks Into Cordova
Getting Your Hooks Into CordovaGetting Your Hooks Into Cordova
Getting Your Hooks Into CordovadevObjective
 
Getting your Hooks into Cordova
Getting your Hooks into CordovaGetting your Hooks into Cordova
Getting your Hooks into CordovaGavin Pickin
 

Similar to Golang skills pre-session (20)

Go for Mobile Games
Go for Mobile GamesGo for Mobile Games
Go for Mobile Games
 
Drone sdk showdown
Drone sdk showdownDrone sdk showdown
Drone sdk showdown
 
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade LinuxWAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
WAM: An embedded web runtime history for LG webOS and Automotive Grade Linux
 
Develop Android app using Golang
Develop Android app using GolangDevelop Android app using Golang
Develop Android app using Golang
 
GDGSCL - Docker a jeho provoz v Heroku a AWS
GDGSCL - Docker a jeho provoz v Heroku a AWSGDGSCL - Docker a jeho provoz v Heroku a AWS
GDGSCL - Docker a jeho provoz v Heroku a AWS
 
Docker opens the Doors for IoT
Docker opens the Doors for IoTDocker opens the Doors for IoT
Docker opens the Doors for IoT
 
Mobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse BindingMobile Apps by Pure Go with Reverse Binding
Mobile Apps by Pure Go with Reverse Binding
 
2012 09-04 smart devcon - boot to the web, boot 2 gecko
2012 09-04 smart devcon - boot to the web, boot 2 gecko2012 09-04 smart devcon - boot to the web, boot 2 gecko
2012 09-04 smart devcon - boot to the web, boot 2 gecko
 
Comparing C and Go
Comparing C and GoComparing C and Go
Comparing C and Go
 
Android Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - IntroductionAndroid Development with Kotlin, Part 1 - Introduction
Android Development with Kotlin, Part 1 - Introduction
 
When, how & why use golang in 2021 go benefits & use cases
When, how & why use golang in 2021  go benefits & use casesWhen, how & why use golang in 2021  go benefits & use cases
When, how & why use golang in 2021 go benefits & use cases
 
Efficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVMEfficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVM
 
Docker Timisoara: Dockercon19 recap slides, 23 may 2019
Docker Timisoara: Dockercon19 recap slides, 23 may 2019Docker Timisoara: Dockercon19 recap slides, 23 may 2019
Docker Timisoara: Dockercon19 recap slides, 23 may 2019
 
Blackberry_runtime_for_android_apps
Blackberry_runtime_for_android_appsBlackberry_runtime_for_android_apps
Blackberry_runtime_for_android_apps
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
 
Assisted code review with source{d} lookout
Assisted code review with source{d} lookoutAssisted code review with source{d} lookout
Assisted code review with source{d} lookout
 
Devops indonesia - The Future Container
Devops indonesia - The Future ContainerDevops indonesia - The Future Container
Devops indonesia - The Future Container
 
DevOps Indonesia #5 - The Future of Containers
DevOps Indonesia #5 - The Future of ContainersDevOps Indonesia #5 - The Future of Containers
DevOps Indonesia #5 - The Future of Containers
 
Getting Your Hooks Into Cordova
Getting Your Hooks Into CordovaGetting Your Hooks Into Cordova
Getting Your Hooks Into Cordova
 
Getting your Hooks into Cordova
Getting your Hooks into CordovaGetting your Hooks into Cordova
Getting your Hooks into Cordova
 

Recently uploaded

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutionsmonugehlot87
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio, Inc.
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 

Recently uploaded (20)

BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
buds n tech IT solutions
buds n  tech IT                solutionsbuds n  tech IT                solutions
buds n tech IT solutions
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed DataAlluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
Alluxio Monthly Webinar | Cloud-Native Model Training on Distributed Data
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 

Golang skills pre-session

  • 1. Golang Skills What we know so far… Sofiane Imadali, Ayoub Bousselmi 21/02/2018
  • 2. Agenda  When, Why and How ?  Golang Projects  Play-with-Docker (open source project)  VNF API (open source project from scratch)  Wall and Wall API (open source project, api from scratch)  Clutch (open source project, from scratch)  Prometheus Integration (exporters development)  Next steps…  Kubernetes and CRD 2/21/2019 Golang Skills 2
  • 3. When, Why and How ? 2/21/2019 Golang Skills 3
  • 4. When, Why and How ? 2/21/2019 Golang Skills 4 When  2016  Go version: 1.7 Why  Docker  RANaaS project: beego based Swagger API (OpenAPI)  integrations with MangoDB  fake data generator like Joke2k/faker in Python:
  • 5. When, Why and How ? 2/21/2019 Golang Skills 5 When  2017  Go version: 1.7, 1.8, 1.9 Why  Docker with Play-with-Docker project  Wall and Wall API  VNF API to integrate Dockerized OpenAirInterface  AccessPoint API to integrate with hostapd and dhcpd
  • 6. When, Why and How ? 2/21/2019 Golang Skills 6 When  2018  Go version: 1.8, 1.9, 1.10 Why  Docker with Play-with-Docker project  Docker-machine driver for the PlayGround (PWD)  Clutch: metrics exporter from PCP to Kafka  All exporters with Prometheus (Web, Postgres), Alertmanager  GitTar: git clone from a repo (for CI)
  • 8. Play-with-Docker 2/21/2019 Golang Skills 8 Goal  Ephemeral environment to play with docker  Part of the Plug’in sandbox Implementation  Gorilla Mux: API routes and handlers  Docker SDK (official API from github)  HTML/CSS/JavaScript/WebSockets connected to golang backend Main libraries  gorilla/mux  docker/docker/api  prometheus/promhttp Links  https://gitlab.forge.orange-labs.fr/lucy/playground
  • 9. Docker Machine Driver 2/21/2019 Golang Skills 9 Goal  Use docker-machine to interact with PlayGround  Create containers (DINDs) in the PlayGround Implementation  Docker-machine SDK Main libraries  docker/machine Links  https://gitlab.forge.orange-labs.fr/lucy/playground-driver
  • 10. VNF API 2/21/2019 Golang Skills 10 Goal  Wrap binaries and make them HTTP attainable  Inspired by Ligato project Implementation  Gin-gonik for swagger API  Logrus for logging  Templating for different configurations Main libraries  sirupsen/logrus  gin-gonic/gin  savaki/swag Links  https://www.sdxcentral.com/products/ligato/
  • 11. Wall and Wall API 2/21/2019 Golang Skills 11 Goal  Make something like Gist (Github) for the Sandbox users Implementation  Jekyll + Nginx  Golang based API + Templating for posts Main libraries  gorilla/mux + gorilla/handlers  urfave/negroni Links  https://gitlab.forge.orange-labs.fr/lucy/wall-api  https://gitlab.forge.orange-labs.fr/lucy/wall
  • 12. Clutch 2/21/2019 Golang Skills 12 Goal  Create small probe to extract metrics from PCP to Kafka Implementation  Kafka and PCP integration  Logrus for logging  Viper for configuration management Main libraries  Shopify/sarama  sirupsen/logrus  spf13/viper Links  https://gitlab.forge.orange-labs.fr/tqwt7730/clutch
  • 13. Prometheus Integration 2/21/2019 Golang Skills 13 Goal  Export metrics from PlayGround to Prometheus  Create an observable deployment on OpenWatt Implementation  Using official golang Http client  Rebuild Docker images from source code Main libraries  prometheus/promhttp Links  https://gitlab.forge.orange-labs.fr/tqwt7730/prom-bbe
  • 14. GitTar 2/21/2019 Golang Skills 14 Goal  Clone a git project from remote repo  Use BasicAuth credentials Implementation  Swagger REST API  Combine with AtomDocs (Sandbox) for documentation CI/CD Main libraries  gopkg.in/src-d/go-git.v4  gin-gonic/gin  savaki/swag Links  https://gitlab.forge.orange-labs.fr/tqwt7730/gittar
  • 15. Beego 2/21/2019 Golang Skills 15 Goal  Create an API for integration for the Radio Access Network as a Service (RANaaS) project Implementation  Generate basic REST API micro-service skeleton Main libraries  astaxie/beego Links  https://beego.me/
  • 17. Kubernetes and CRD 2/21/2019 Golang Skills 17  Play with Kubernetes  https://github.com/play-with-docker/play-with-docker/tree/k8s  Deploy K8S using Vagrant  https://github.com/sofianinho/vagrant-kube  CRD: we can collaborate !  Operator Framework: https://github.com/operator-framework