The document discusses microservices and the Go programming language. It notes that modern enterprises have adopted service-oriented architectures with microservices to gain advantages like scalability. Go is well-suited for microservices due to its design considerations like concurrency and dependency management. The document also highlights benefits of Go like built-in memory management and its growing adoption at Google and other companies.
CODE GIST: https://gist.github.com/tyndyll/cce72c16dc112cbe7ffac44dbb1dc5e8
A high level introduction to the Go programming language, including a sample Hello World web server
This document estimates the total development cost of Linux Foundation's collaborative open source projects if they had to be rebuilt from scratch. It analyzes over 115 million lines of source code across various projects. Using the Constructive Cost Model (COCOMO), it estimates it would take over 41,000 person-years of work and cost $5 billion to recreate these projects. The largest projects by lines of code are Tizen and Code Aurora Forum. While a simple analysis, it demonstrates the significant value provided by collaborative open source development.
This session will demonstrate how to use the Zowe open source framework to extend modern devops tooling and practices to the mainframe and to enhance the mainframe developer experience. A follow-up to the overview session, the hosts will drill into the Zowe architecture while demoing key capabilities including the command line interface (CLI) and API Mediation Layer.
Organized by the Linux Foundation’s Open Mainframe Project, Zowe opens the mainframe to the next generation of talent. Join this interactive session to learn how to “un-silo” the mainframe to accelerate software delivery and drive true cross-platform applications.
This paper examines the benefits of using open source software, along with some of the potential risks, to help you determine whether your company should turn to an open source solution, a commercial application, or a combination of both.
Strengthening Adobe’s Enterprise Platform with Day Software and Open DevelopmentCraig Randall
The document discusses strengthening Adobe's enterprise platform through the acquisition of Day Software and promoting open development. It provides an overview of Day Software's products and architecture, including its use of open standards and Apache Sling framework. It also outlines Adobe's vision for Customer Experience Management (CEM) to provide personalized, consistent experiences across channels through an open platform combining content and applications.
This document provides an overview of Zowe, an open source project that aims to make the mainframe an integrated and agile platform. It introduces Zowe, provides quick facts about the project, explains why Zowe was created and its vision. It describes the key components of Zowe including REST services, a web desktop, CLI and API mediation layer. The document outlines who Zowe is for, the project roadmap and how to get involved in the community. It concludes with an invitation to participate in a demo.
This deck was used at the 2017 InterConnect conference for a session on building microservices. Much of the information came from personal experiences building a set of microservices around the IBM Voice Gateway which enables cognitive voice BOTs via Voip.
CODE GIST: https://gist.github.com/tyndyll/cce72c16dc112cbe7ffac44dbb1dc5e8
A high level introduction to the Go programming language, including a sample Hello World web server
This document estimates the total development cost of Linux Foundation's collaborative open source projects if they had to be rebuilt from scratch. It analyzes over 115 million lines of source code across various projects. Using the Constructive Cost Model (COCOMO), it estimates it would take over 41,000 person-years of work and cost $5 billion to recreate these projects. The largest projects by lines of code are Tizen and Code Aurora Forum. While a simple analysis, it demonstrates the significant value provided by collaborative open source development.
This session will demonstrate how to use the Zowe open source framework to extend modern devops tooling and practices to the mainframe and to enhance the mainframe developer experience. A follow-up to the overview session, the hosts will drill into the Zowe architecture while demoing key capabilities including the command line interface (CLI) and API Mediation Layer.
Organized by the Linux Foundation’s Open Mainframe Project, Zowe opens the mainframe to the next generation of talent. Join this interactive session to learn how to “un-silo” the mainframe to accelerate software delivery and drive true cross-platform applications.
This paper examines the benefits of using open source software, along with some of the potential risks, to help you determine whether your company should turn to an open source solution, a commercial application, or a combination of both.
Strengthening Adobe’s Enterprise Platform with Day Software and Open DevelopmentCraig Randall
The document discusses strengthening Adobe's enterprise platform through the acquisition of Day Software and promoting open development. It provides an overview of Day Software's products and architecture, including its use of open standards and Apache Sling framework. It also outlines Adobe's vision for Customer Experience Management (CEM) to provide personalized, consistent experiences across channels through an open platform combining content and applications.
This document provides an overview of Zowe, an open source project that aims to make the mainframe an integrated and agile platform. It introduces Zowe, provides quick facts about the project, explains why Zowe was created and its vision. It describes the key components of Zowe including REST services, a web desktop, CLI and API mediation layer. The document outlines who Zowe is for, the project roadmap and how to get involved in the community. It concludes with an invitation to participate in a demo.
This deck was used at the 2017 InterConnect conference for a session on building microservices. Much of the information came from personal experiences building a set of microservices around the IBM Voice Gateway which enables cognitive voice BOTs via Voip.
DevOps for the IBM Mainframe environmentMicro Focus
Establishing a model that works across enterprise IT –
including mainframe systems
The solutions and methodologies tackling business challenges are constantly evolving. From waterfall to agile and on to continuous integration and DevOps, successful software development is about achieving the improved efficiencies needed to meet ever-growing business requirements.
DevOps - a blend of Development and Operations - is not a straightforward fit for the mainframe environment. But change is required if enterprises are going to match more agile operations in meeting efficiency targets against a background of increasing application complexity.
The document is an agenda for a Watson on Bluemix meetup. It includes:
- An overview of Bluemix runtime, services, and DevOps architecture by Animesh Singh.
- A discussion of Watson Cloud and Cognitive Services by Anthony Stevens.
- A demo of a Watson application by Wade Barnes, who will walk through deploying a Node.js app on Bluemix that uses the Watson User Modeling service.
Microservices and IBM Bluemix meetup presentationCarlos Ferreira
Presentation delivered at the Massachusetts Microservices Meetup and Cambridge Bluemix meetup.
http://www.meetup.com/Massachusetts-Microservices-Meetup/
AWS Summit London 2019 - Containers on AWSMassimo Ferre'
This document discusses various options for running containers on AWS, including EC2 instances, ECS, EKS, Lambda, and Fargate. It provides examples of deploying a sample application called Yelb using each option. EKS is highlighted as providing a managed Kubernetes control plane while allowing customers to manage their own worker nodes. ECS is noted as having deep integration with other AWS services. The document concludes that EKS is well suited for hybrid deployments while ECS provides a more out-of-the-box experience through tighter AWS platform integration.
The document summarizes an agenda for an Open Mainframe Project event. It includes introductions of several mainframe-centric open source projects hosted by the Open Mainframe Project: Ambitus, Feilong, Polycephaly, Zorow, and Zowe. It provides overviews of the missions and benefits of each project. It also discusses the Zowe Conformance Program and how to get involved in the Open Mainframe Project community through various activities and events.
Jeff Reynolds is the Director of Enterprise Solutions Consulting at CollabNet. He has over 24 years of experience in software development. CollabNet provides an enterprise platform called TeamForge that allows organizations to securely manage development tools like Git and Subversion across distributed teams. TeamForge uses a community architecture approach with features like site organization, access controls, templates, and associating related intellectual property to address the needs of highly complex organizations.
This document provides an overview of benchmarking market pricing for outsourced IT services. It discusses the importance of benchmarking to determine appropriate pricing and ensure the best value. The document outlines the two main types of benchmarking: cost benchmarking, which analyzes internal costs for efficiency opportunities, and price benchmarking, which analyzes outsourced service fees. It also provides guidance on when benchmarking clauses in contracts are most appropriate based on factors like contract length and commonality of services. Finally, it emphasizes the importance of properly scoping benchmarking based on the specific services included.
Programmatic Access to and Extensibility of the IBM SmartCloud for Social Bus...IBM Connections Developers
IBM SmartCloud for Social Business is a social framework that provides social services like profiles, communities, and activities that can be consumed by any application. It also provides an end user UI for accessing social data on the web and mobile. Developers can extend or build applications that consume these cloud services by using the Social Business Toolkit SDK which includes APIs, code snippets, and UI components. Sample scenarios include building a partner community application that extends the SmartCloud functionality.
Cloud Native Patterns with Bluemix Developer ConsoleMatthew Perrins
This presentation talks about Cloud Native Application patterns Mobile, Web, BFF (Backend for Frontend) and Microservices. It will walk through the patterns and show how they can be used to deliver public cloud solutions with IBM Cloud, using Bluemix Developer Console
The document describes Collabograte, an integration platform for collaboration components. It aims to provide an open platform for integrating components like wikis, blogs, mailing lists, and chat while maximizing user freedom and flexibility. It uses Puppet for configuration management and integrates components like OpenLDAP, MediaWiki, WordPress, Postfix, Cyrus, and ejabberd. Collabograte provides virtual machine images and Puppet modules to configure the integrated stack on a Linux host.
You manage a mainframe environment that runs one
or more of your business’ mission critical applications.
Things are good; security, performance and reliability are
just where they should be. But when you think about
your long term staffing strategy, you cringe, because
most of the people on your mainframe staff are about to retire.
This document discusses how Google is working to make the client, connectivity, and cloud more powerful and accessible through open technologies. It focuses on three areas: 1) Making the cloud more accessible through technologies like Google App Engine and data APIs. 2) Keeping connectivity pervasive through open platforms like Android and social APIs. 3) Making the client more powerful through technologies like Google Web Toolkit, Gears, and social platforms like OpenSocial. The goal is to advance an open web that empowers both users and developers.
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...Daniel Krook
Materials for the OPEN TALK: Commit to the Cause, Push for Change: Contributing to Call for Code Open Source Projects session at DeveloperWeek Virtual on February 18, 2020
https://www.developerweek.com/conference/
Daniel Krook
IBM, Chief Technology Officer for the Call for Code Global Initiative
Andres Meira
Grillo, Founder & CEO
Lakshyana K.C.
Build Change, Technology Consultant
Call for Code is a multi-year program that calls on developers to create practical, effective, and high-quality applications based on one or more IBM Cloud services (for example, web, mobile, data, analytics, AI, IoT, or weather) or Red Hat platforms (including OpenShift) to build a solution that can have an immediate and lasting impact on humanitarian issues as open source projects. In this session you'll learn more about the solutions built to tackle natural hazards, climate change, and the pandemic. What sets Call for Code apart from other technology-for-good competitions is the commitment to deploy the winning solutions with the IBM Service Corps and to help teams build sustainable open source communities through The Linux Foundation. Join us at this talk to hear about the most recent winning projects, get an update on previous year's progress, and learn about how to contribute to two projects directly from the developers.
Logstash Editor: The vscode extension to boost your productivity!Fabien Baligand
Learn how to boost your productivity with Logstash, using Logstash Editor vscode extension, that brings completion, integrated documentation and auto-formatting for Logstash, Elasticsearch and Filebeat!
What does the road ahead look like for the Micro Focus COBOL products? Let’s take a closer look at the product strategy and vision over the twelve to eighteen months. Let’s examine the key audience messages and benefits for these products, including their planned roadmap themes and deliverables for the coming year. Whether you’re using RM, ACU, Net Express, Server Express, or moving to the Visual COBOL product, you won’t want to miss this session. Understand the current and future product plans and product roadmaps for these COBOL technologies.
As always the conference was opened with a speech by Alexei Vladishev, the creator of Zabbix, glancing over the accomplishments Zabbix made during the past year, mostly focusing on the features and improvements that await us all in the Zabbix 3.0 release.
Zabbix Conference 2015
A presentation on our experience at Ingram Content Group with Grafana and MySQL. In an enterprise environment it is sometimes necessary to keep data in a traditional, general purpose SQL database such as MySQL or PostgreSQL. These slides explore the challenges and benefits of using Grafana with an SQL database in a large enterprise production setting.
Technology changes and process changes in how people build and manage Internet systems have driven a need for a new approach to monitoring. We talk about why, what and how.
Icinga Camp Barcelona - Current State of IcingaIcinga
This document contains the slides from a presentation on the state of Icinga. It discusses the Icinga project teams and community, as well as providing overviews of Icinga 1, Icinga 2, remote monitoring with Icinga 2, Icinga 2 clustering, and Icinga Web 2. It also outlines the vision for continued Icinga 2 development and integration with other tools.
DevOps for the IBM Mainframe environmentMicro Focus
Establishing a model that works across enterprise IT –
including mainframe systems
The solutions and methodologies tackling business challenges are constantly evolving. From waterfall to agile and on to continuous integration and DevOps, successful software development is about achieving the improved efficiencies needed to meet ever-growing business requirements.
DevOps - a blend of Development and Operations - is not a straightforward fit for the mainframe environment. But change is required if enterprises are going to match more agile operations in meeting efficiency targets against a background of increasing application complexity.
The document is an agenda for a Watson on Bluemix meetup. It includes:
- An overview of Bluemix runtime, services, and DevOps architecture by Animesh Singh.
- A discussion of Watson Cloud and Cognitive Services by Anthony Stevens.
- A demo of a Watson application by Wade Barnes, who will walk through deploying a Node.js app on Bluemix that uses the Watson User Modeling service.
Microservices and IBM Bluemix meetup presentationCarlos Ferreira
Presentation delivered at the Massachusetts Microservices Meetup and Cambridge Bluemix meetup.
http://www.meetup.com/Massachusetts-Microservices-Meetup/
AWS Summit London 2019 - Containers on AWSMassimo Ferre'
This document discusses various options for running containers on AWS, including EC2 instances, ECS, EKS, Lambda, and Fargate. It provides examples of deploying a sample application called Yelb using each option. EKS is highlighted as providing a managed Kubernetes control plane while allowing customers to manage their own worker nodes. ECS is noted as having deep integration with other AWS services. The document concludes that EKS is well suited for hybrid deployments while ECS provides a more out-of-the-box experience through tighter AWS platform integration.
The document summarizes an agenda for an Open Mainframe Project event. It includes introductions of several mainframe-centric open source projects hosted by the Open Mainframe Project: Ambitus, Feilong, Polycephaly, Zorow, and Zowe. It provides overviews of the missions and benefits of each project. It also discusses the Zowe Conformance Program and how to get involved in the Open Mainframe Project community through various activities and events.
Jeff Reynolds is the Director of Enterprise Solutions Consulting at CollabNet. He has over 24 years of experience in software development. CollabNet provides an enterprise platform called TeamForge that allows organizations to securely manage development tools like Git and Subversion across distributed teams. TeamForge uses a community architecture approach with features like site organization, access controls, templates, and associating related intellectual property to address the needs of highly complex organizations.
This document provides an overview of benchmarking market pricing for outsourced IT services. It discusses the importance of benchmarking to determine appropriate pricing and ensure the best value. The document outlines the two main types of benchmarking: cost benchmarking, which analyzes internal costs for efficiency opportunities, and price benchmarking, which analyzes outsourced service fees. It also provides guidance on when benchmarking clauses in contracts are most appropriate based on factors like contract length and commonality of services. Finally, it emphasizes the importance of properly scoping benchmarking based on the specific services included.
Programmatic Access to and Extensibility of the IBM SmartCloud for Social Bus...IBM Connections Developers
IBM SmartCloud for Social Business is a social framework that provides social services like profiles, communities, and activities that can be consumed by any application. It also provides an end user UI for accessing social data on the web and mobile. Developers can extend or build applications that consume these cloud services by using the Social Business Toolkit SDK which includes APIs, code snippets, and UI components. Sample scenarios include building a partner community application that extends the SmartCloud functionality.
Cloud Native Patterns with Bluemix Developer ConsoleMatthew Perrins
This presentation talks about Cloud Native Application patterns Mobile, Web, BFF (Backend for Frontend) and Microservices. It will walk through the patterns and show how they can be used to deliver public cloud solutions with IBM Cloud, using Bluemix Developer Console
The document describes Collabograte, an integration platform for collaboration components. It aims to provide an open platform for integrating components like wikis, blogs, mailing lists, and chat while maximizing user freedom and flexibility. It uses Puppet for configuration management and integrates components like OpenLDAP, MediaWiki, WordPress, Postfix, Cyrus, and ejabberd. Collabograte provides virtual machine images and Puppet modules to configure the integrated stack on a Linux host.
You manage a mainframe environment that runs one
or more of your business’ mission critical applications.
Things are good; security, performance and reliability are
just where they should be. But when you think about
your long term staffing strategy, you cringe, because
most of the people on your mainframe staff are about to retire.
This document discusses how Google is working to make the client, connectivity, and cloud more powerful and accessible through open technologies. It focuses on three areas: 1) Making the cloud more accessible through technologies like Google App Engine and data APIs. 2) Keeping connectivity pervasive through open platforms like Android and social APIs. 3) Making the client more powerful through technologies like Google Web Toolkit, Gears, and social platforms like OpenSocial. The goal is to advance an open web that empowers both users and developers.
Commit to the Cause, Push for Change: Contributing to Call for Code Open Sour...Daniel Krook
Materials for the OPEN TALK: Commit to the Cause, Push for Change: Contributing to Call for Code Open Source Projects session at DeveloperWeek Virtual on February 18, 2020
https://www.developerweek.com/conference/
Daniel Krook
IBM, Chief Technology Officer for the Call for Code Global Initiative
Andres Meira
Grillo, Founder & CEO
Lakshyana K.C.
Build Change, Technology Consultant
Call for Code is a multi-year program that calls on developers to create practical, effective, and high-quality applications based on one or more IBM Cloud services (for example, web, mobile, data, analytics, AI, IoT, or weather) or Red Hat platforms (including OpenShift) to build a solution that can have an immediate and lasting impact on humanitarian issues as open source projects. In this session you'll learn more about the solutions built to tackle natural hazards, climate change, and the pandemic. What sets Call for Code apart from other technology-for-good competitions is the commitment to deploy the winning solutions with the IBM Service Corps and to help teams build sustainable open source communities through The Linux Foundation. Join us at this talk to hear about the most recent winning projects, get an update on previous year's progress, and learn about how to contribute to two projects directly from the developers.
Logstash Editor: The vscode extension to boost your productivity!Fabien Baligand
Learn how to boost your productivity with Logstash, using Logstash Editor vscode extension, that brings completion, integrated documentation and auto-formatting for Logstash, Elasticsearch and Filebeat!
What does the road ahead look like for the Micro Focus COBOL products? Let’s take a closer look at the product strategy and vision over the twelve to eighteen months. Let’s examine the key audience messages and benefits for these products, including their planned roadmap themes and deliverables for the coming year. Whether you’re using RM, ACU, Net Express, Server Express, or moving to the Visual COBOL product, you won’t want to miss this session. Understand the current and future product plans and product roadmaps for these COBOL technologies.
As always the conference was opened with a speech by Alexei Vladishev, the creator of Zabbix, glancing over the accomplishments Zabbix made during the past year, mostly focusing on the features and improvements that await us all in the Zabbix 3.0 release.
Zabbix Conference 2015
A presentation on our experience at Ingram Content Group with Grafana and MySQL. In an enterprise environment it is sometimes necessary to keep data in a traditional, general purpose SQL database such as MySQL or PostgreSQL. These slides explore the challenges and benefits of using Grafana with an SQL database in a large enterprise production setting.
Technology changes and process changes in how people build and manage Internet systems have driven a need for a new approach to monitoring. We talk about why, what and how.
Icinga Camp Barcelona - Current State of IcingaIcinga
This document contains the slides from a presentation on the state of Icinga. It discusses the Icinga project teams and community, as well as providing overviews of Icinga 1, Icinga 2, remote monitoring with Icinga 2, Icinga 2 clustering, and Icinga Web 2. It also outlines the vision for continued Icinga 2 development and integration with other tools.
Most often Zabbix users will monitor Linux hosts using the Zabbix agent, however SNMP is not only an option, it's actually a very viable one. Andrew Nelson will describe his experience configuring Zabbix to monitor a Linux environment of over 500 systems using only SNMP.
Zabbix Conference 2015
- Alexei Vladishev is the creator of Zabbix and CEO of the Zabbix company.
- Zabbix 3.0 will include improvements to the interface, encryption, authentication, versioning for XML files, and low-level discovery based on SQL queries.
- Future goals for Zabbix include improving the web interface, making the API faster and more reliable, adding advanced reporting capabilities, improving scalability to handle terrabytes of data, and expanding the API and plugins.
Go was created at Google in 2007 to address frustrations with existing languages for systems programming. It aims to combine the ease of dynamically typed languages with the efficiency and safety of compiled statically typed languages. The goals of Go were to have efficient compilation and execution as well as ease of programming, while supporting modern computing like networks and multicore. A new language was needed to meet these goals through features like an expressive but lightweight type system, built-in concurrency and garbage collection.
Google software engineering practices by handersonmustafa sarac
The document summarizes some of Google's key software engineering practices, including:
- Using a single source code repository accessible to all engineers, with code ownership and code reviews required.
- A distributed build system called Blaze that compiles and tests code quickly across many machines.
- A web-based code review tool integrated with email that requires at least one review from another engineer.
- Strong emphasis on automated testing, including unit testing and presubmit checks that run tests on all code changes.
Low-Code vs. Programming – It Isn’t an Either/Or DecisionAppian
Learn why low-code vs. programming isn’t an either/or decision, it’s an opportunity to use two strategies in tandem to drive innovation: http://ap.pn/2w6iGUd
Advantages of golang development services & 10 most used go frameworksKaty Slemon
Go is a compiled, typed language inspired by C syntax that allows programmers familiar with C to migrate to a modern language with the same power. It supports asynchronous concurrency through goroutines and channels, allowing for high performance on multi-core systems. Go programs compile to static binaries with no dependencies, making deployment simple. Popular frameworks for Go include Faygo, Essgo, Macaron, Hugo, Baa, Gin, Beego, Buffalo, Revel, and Gorilla. Overall, Go is well-suited for backend systems requiring high performance and concurrency due to its stability, efficiency and ease of use.
What Makes Dot Net Framework Better for Business Application Development.pptxSaniyaSharma28
The main reason behind opting dot net framework is that there will be fewer challenges in application development, fewer costs, reduces the duration of time, and others. Honestly, it is also a growing and enhanced field in the part of development nowadays, and if you are also interested in this, then you should go for Dot Net Training in Noida.
Applying DevOps, PaaS and cloud for better citizen service outcomes - IBM Fe...Sanjeev Sharma
1) Applying DevOps practices like continuous integration/delivery can help government agencies deploy IT projects faster and get citizen services into production quicker.
2) Using a Platform as a Service (PaaS) like IBM Bluemix allows agencies to build and manage applications faster while reducing costs and skills requirements.
3) Adopting a DevOps culture and tools that automate testing, deployment, and monitoring can help agencies accelerate delivery of citizen services with better outcomes and less resources.
Video and slides synchronized, mp3 and slide download available at URL http://bit.ly/2Cs3wyC.
Carmen Andoh provides the historical context around the technical decisions of the Go language to better understand its concurrency primitives, garbage collection, and small standard library. Filmed at qconsf.com.
Carmen Andoh is a software engineer on the Build Infrastructure team at Travis CI. She was the first scholarship recipient for Gophercon in 2015, where she was first introduced to Go, and hasn't looked back.
Google has highly optimized engineering processes developed over decades of building software at massive scale. They use practices like continuous integration/delivery, automated testing of all code changes, containerization, and Site Reliability Engineering. Much of Google's internal tools like Kubernetes, Tensorflow, and Borg that manage these processes are now available publicly on Google Cloud Platform. Migrating to Google Cloud allows companies to leverage the same infrastructure Google uses to build software securely and reliably at large scale.
Implementing Cloud-Based DevOps for Distributed Agile ProjectsTechWell
Cloud-based development, delivery, and deployment environments are the future of IT operations. Thomas Stiehm shares the hard-learned lessons of setting up and running cloud-based solutions that implement DevOps for geographically distributed agile projects. Thomas describes how to best leverage the cloud to enable your teams to use it effectively. Learn why cloud software delivery is different from traditional software delivery environments, and how to optimize your platform and team to get the most out of the cloud. Geographically-distributed software delivery teams are now the norm for large projects, and the cloud is a perfect enabler to level the playing field for your distributed teams and to give them all the same ability to achieve high productivity. Since the road to the cloud isn’t always paved, learn many of the trade-offs that must be made to implement cloud-based delivery and discover the situations that will derail a move to cloud-based development.
This document provides an overview of scaling applications with Go. It discusses what Go offers as a programming language, including being compact, easy to learn, statically typed but with a dynamic feel, and supporting concurrency through goroutines and channels. It also covers where Go can be used, using Go in production, comparisons to other languages, and case studies of companies using Go.
Go language could be a artificial language 1st developed by Google in 2007 by Henry Martyn Robert Griesemer, Rob Pike, and Ken Thompson. it's a mathematical language with a syntax like that of C. It offers pickup, sort security, powerful typewriting power, several intrinsical varieties like dynamic long lists and key worth maps. It additionally provides an upscale commonplace library. The Go artificial language was introduced in November 2009 and is employed in alternative Google production programs.
Created by Robert Griesemer, Rob Pike and Ken Thompson for Google, GoLang was reportedly built by developers when they were waiting for the code compilation to complete in a project. The three main capabilities they certainly sought-after were the ease of coding, efficient code-compilation and efficient execution. Bringing all these capabilities in one language is what made Go so special.
The new stack isn’t a stack: Fragmentation and terraforming the service layerDonnie Berkholz
Open source, cloud, and the API revolution have already
changed the way we build software. What's next? Donnie's spent the past 5 years trying to figure that out through observation and research at RedMonk and now at 451 Research. In this talk, he'll share what he's seen and what he predicts for the future of how we develop applications. You'll hear buzzwords like DevOps and microservices used in ways that actually make sense (for a change), see real-world examples of companies that have succeeded and failed, and learn how approaches like the one taken by HashiCorp's Terraform (by the authors of Vagrant) will be critical to the future of how we build software.
Project Fuji aims to improve upon OpenESB by making it more lightweight, modular, and easier to use. It leverages OSGi to simplify development workflows and integration with other technologies like Spring and scripting languages. Project Fuji also focuses on agility through its reactive runtime and flexibility through its small microkernel architecture that can run on any OSGi container. The goal is to increase developer productivity and make integration more relevant to new communities.
.NET development receives constant updates to enable better app development. Here are the new features in .NET 6.0 that .NET developers need to know.
Learn More: https://www.botreetechnologies.com/blog/top-things-know-about-net-6/
This presentation was provided by Chris Shillum of ORCID during the NFAIS Forethought Strategic Summit "Transforming Systems Through Transformed Content." The event was held June 16-17, 2021.
Buddy, partnered with industry leaders such as Amazon, Docker, Github, Microsoft, and Google, is a winning development automation platform that serves a rapidly growing market valued to become $345 billion by 2022. Over 7,000 developers use Buddy every day across 120+ countries. Featured customers: INC. Magazine, CGI.com & ING Bank. Our vision is to become the backbone on which talented people can build world-altering apps & services. Our goal is to take the load off millions of developers by offloading everything that can be automated – giving them back the time for being creative.
Webcast Presentation: Be lean. Be agile. Work together with DevOps Services (...GRUC
This document provides information about how to connect with the Rational user community through various online channels, including the Rational user group website, Twitter, LinkedIn, and Google+. It lists the URLs for joining discussions or following news on each of these platforms.
Malibou Pitch Deck For Its €3M Seed Roundsjcobrien
French start-up Malibou raised a €3 million Seed Round to develop its payroll and human resources
management platform for VSEs and SMEs. The financing round was led by investors Breega, Y Combinator, and FCVC.
Odoo releases a new update every year. The latest version, Odoo 17, came out in October 2023. It brought many improvements to the user interface and user experience, along with new features in modules like accounting, marketing, manufacturing, websites, and more.
The Odoo 17 update has been a hot topic among startups, mid-sized businesses, large enterprises, and Odoo developers aiming to grow their businesses. Since it is now already the first quarter of 2024, you must have a clear idea of what Odoo 17 entails and what it can offer your business if you are still not aware of it.
This blog covers the features and functionalities. Explore the entire blog and get in touch with expert Odoo ERP consultants to leverage Odoo 17 and its features for your business too.
An Overview of Odoo ERP
Odoo ERP was first released as OpenERP software in February 2005. It is a suite of business applications used for ERP, CRM, eCommerce, websites, and project management. Ten years ago, the Odoo Enterprise edition was launched to help fund the Odoo Community version.
When you compare Odoo Community and Enterprise, the Enterprise edition offers exclusive features like mobile app access, Odoo Studio customisation, Odoo hosting, and unlimited functional support.
Today, Odoo is a well-known name used by companies of all sizes across various industries, including manufacturing, retail, accounting, marketing, healthcare, IT consulting, and R&D.
The latest version, Odoo 17, has been available since October 2023. Key highlights of this update include:
Enhanced user experience with improvements to the command bar, faster backend page loading, and multiple dashboard views.
Instant report generation, credit limit alerts for sales and invoices, separate OCR settings for invoice creation, and an auto-complete feature for forms in the accounting module.
Improved image handling and global attribute changes for mailing lists in email marketing.
A default auto-signature option and a refuse-to-sign option in HR modules.
Options to divide and merge manufacturing orders, track the status of manufacturing orders, and more in the MRP module.
Dark mode in Odoo 17.
Now that the Odoo 17 announcement is official, let’s look at what’s new in Odoo 17!
What is Odoo ERP 17?
Odoo 17 is the latest version of one of the world’s leading open-source enterprise ERPs. This version has come up with significant improvements explained here in this blog. Also, this new version aims to introduce features that enhance time-saving, efficiency, and productivity for users across various organisations.
Odoo 17, released at the Odoo Experience 2023, brought notable improvements to the user interface and added new functionalities with enhancements in performance, accessibility, data analysis, and management, further expanding its reach in the market.
8 Best Automated Android App Testing Tool and Framework in 2024.pdfkalichargn70th171
Regarding mobile operating systems, two major players dominate our thoughts: Android and iPhone. With Android leading the market, software development companies are focused on delivering apps compatible with this OS. Ensuring an app's functionality across various Android devices, OS versions, and hardware specifications is critical, making Android app testing essential.
Mobile App Development Company In Noida | Drona InfotechDrona Infotech
Drona Infotech is a premier mobile app development company in Noida, providing cutting-edge solutions for businesses.
Visit Us For : https://www.dronainfotech.com/mobile-application-development/
Consistent toolbox talks are critical for maintaining workplace safety, as they provide regular opportunities to address specific hazards and reinforce safe practices.
These brief, focused sessions ensure that safety is a continual conversation rather than a one-time event, which helps keep safety protocols fresh in employees' minds. Studies have shown that shorter, more frequent training sessions are more effective for retention and behavior change compared to longer, infrequent sessions.
Engaging workers regularly, toolbox talks promote a culture of safety, empower employees to voice concerns, and ultimately reduce the likelihood of accidents and injuries on site.
The traditional method of conducting safety talks with paper documents and lengthy meetings is not only time-consuming but also less effective. Manual tracking of attendance and compliance is prone to errors and inconsistencies, leading to gaps in safety communication and potential non-compliance with OSHA regulations. Switching to a digital solution like Safelyio offers significant advantages.
Safelyio automates the delivery and documentation of safety talks, ensuring consistency and accessibility. The microlearning approach breaks down complex safety protocols into manageable, bite-sized pieces, making it easier for employees to absorb and retain information.
This method minimizes disruptions to work schedules, eliminates the hassle of paperwork, and ensures that all safety communications are tracked and recorded accurately. Ultimately, using a digital platform like Safelyio enhances engagement, compliance, and overall safety performance on site. https://safelyio.com/
Microservice Teams - How the cloud changes the way we workSven Peters
A lot of technical challenges and complexity come with building a cloud-native and distributed architecture. The way we develop backend software has fundamentally changed in the last ten years. Managing a microservices architecture demands a lot of us to ensure observability and operational resiliency. But did you also change the way you run your development teams?
Sven will talk about Atlassian’s journey from a monolith to a multi-tenanted architecture and how it affected the way the engineering teams work. You will learn how we shifted to service ownership, moved to more autonomous teams (and its challenges), and established platform and enablement teams.
What to do when you have a perfect model for your software but you are constrained by an imperfect business model?
This talk explores the challenges of bringing modelling rigour to the business and strategy levels, and talking to your non-technical counterparts in the process.
Baha Majid WCA4Z IBM Z Customer Council Boston June 2024.pdfBaha Majid
IBM watsonx Code Assistant for Z, our latest Generative AI-assisted mainframe application modernization solution. Mainframe (IBM Z) application modernization is a topic that every mainframe client is addressing to various degrees today, driven largely from digital transformation. With generative AI comes the opportunity to reimagine the mainframe application modernization experience. Infusing generative AI will enable speed and trust, help de-risk, and lower total costs associated with heavy-lifting application modernization initiatives. This document provides an overview of the IBM watsonx Code Assistant for Z which uses the power of generative AI to make it easier for developers to selectively modernize COBOL business services while maintaining mainframe qualities of service.
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesQuickdice ERP
Explore the seamless transition to e-invoicing with this comprehensive guide tailored for Saudi Arabian businesses. Navigate the process effortlessly with step-by-step instructions designed to streamline implementation and enhance efficiency.
DECODING JAVA THREAD DUMPS: MASTER THE ART OF ANALYSISTier1 app
Are you ready to unlock the secrets hidden within Java thread dumps? Join us for a hands-on session where we'll delve into effective troubleshooting patterns to swiftly identify the root causes of production problems. Discover the right tools, techniques, and best practices while exploring *real-world case studies of major outages* in Fortune 500 enterprises. Engage in interactive lab exercises where you'll have the opportunity to troubleshoot thread dumps and uncover performance issues firsthand. Join us and become a master of Java thread dump analysis!
Unveiling the Advantages of Agile Software Development.pdfbrainerhub1
Learn about Agile Software Development's advantages. Simplify your workflow to spur quicker innovation. Jump right in! We have also discussed the advantages.
A neural network is a machine learning program, or model, that makes decisions in a manner similar to the human brain, by using processes that mimic the way biological neurons work together to identify phenomena, weigh options and arrive at conclusions.
E-commerce Development Services- Hornet DynamicsHornet Dynamics
For any business hoping to succeed in the digital age, having a strong online presence is crucial. We offer Ecommerce Development Services that are customized according to your business requirements and client preferences, enabling you to create a dynamic, safe, and user-friendly online store.
Project Management: The Role of Project Dashboards.pdfKarya Keeper
Project management is a crucial aspect of any organization, ensuring that projects are completed efficiently and effectively. One of the key tools used in project management is the project dashboard, which provides a comprehensive view of project progress and performance. In this article, we will explore the role of project dashboards in project management, highlighting their key features and benefits.
2. 2
Siarhei Hladkou
• Senior Project Manager, EPAM Systems
• 11+ years on technical and project lead positions at EPAM
• 20+ years of production experience
• Started programming at 1987
• Built my first Sinclair ZX analog at 1989
• Experience with building platforms:
– Z51, MCS51, Atmel, Analog Devices, PC
– ASM, C, C++, Fortran, Pascal, C#, JavaScript
– Delphi, C++ MVC, COM+, .NET, NodeJS
• Today my favorite is GOLANG
ABOUT ME
4. 4
The modern enterprise
“When we read the word enterprise we probably think of older, slow-moving bureaucracies, like IBM,
HP, or even Red Hat. But it’s been a long time since companies like those have been technical leaders.
Decades, in some cases. Now, companies like Google, Amazon, Twitter, Netflix, Facebook, Spotify, or
even SoundCloud set the tone for our industry. These modern enterprises tend to share a few
characteristics:
• Tech-oriented
• Consumer-focused
• Successful, exponential growth
• 100–1000+ engineers
• A service-oriented architecture
The last point in particular is important.”
Peter Bourgon
5. 5
A service-oriented architecture
“With notable exceptions, most major modern enterprises have adopted a service-oriented (or
microservice) architecture, after very similar patterns of evolution.
1. Start with a Ruby-on-Rails (or equivalent) monolith
2. Break out key components as services, leading to an SOA
3. Maybe, further deconstruction toward microservices
SOAs yield big advantages, but they come at a cost.Any set of network services is inherently more
complex than its monolithic equivalent, owing to the well-documented fallacies of distributed
computing. Managing that complexity usually begins with conventions and best practices, which
eventually evolve into libraries and frameworks. In the modern enterprise, de-facto standards are
beginning to emerge, often as open-source projects.”
Peter Bourgon
6. 6
A service-oriented language
“In this environment, a language like Go has the opportunity to shine. Its coherent and considered
design, developer friendly toolchain, architecture native binaries, and near C efficiency make it
incredibly attractive in a service-oriented architecture, especially when compared against the current
state of the art. Go also punches well above its age-class in terms of library and ecosystem maturity,
and in-the-wild success stories.”
Peter Bourgon
7. 7
“Any organization that designs a system (defined broadly)
will produce a design whose structure is a copy of the
organization's communication structure.”
Melvyn Conway, 1967
Modern monolithic application structure
8. 8
“The microservice approach to division is different,
splitting up into services organized around business
capability. Such services take a broad-stack
implementation of software for that business area,
including user-interface, persistant storage, and any
external collaborations. Consequently the teams are
cross-functional, including the full range of skills required
for the development: user-experience, database, and
project management.”
Martin Fowler
Service boundaries reinforced by team boundaries
9. 9
“While monolithic applications prefer a single logical
database for persistant data, enterprises often prefer a
single database across a range of applications - many of
these decisions driven through vendor's commercial
models around licensing. Microservices prefer letting each
service manage its own database, either different
instances of the same database technology, or entirely
different database systems - an approach called Polyglot
Persistence. You can use polyglot persistence in a
monolith, but it appears more frequently with
Microservices.”
Martin Fowler
Polyglot Persistence
10. 10
Microservices
“In short, the microservice architectural style is an approach to developing a single application as
a suite of small services, each running in its own process and communicating with lightweight
mechanisms, often an HTTP resource API. These services are built around business capabilities and
independently deployable by fully automated deployment machinery. There is a bare minimum of
centralized management of these services, which may be written in different programming languages
and use different data storage technologies.”
James Lewis and Martin Fowler
13. 13
“Microservices Premium - a cost we pay in reduced
productivity to learn and manage this style. As a system
becomes more complex, this premium is outweighed by the
fact that the style reduces the productivity loss that
increasing system complexity imposes on us. But it's a
price only worth paying for more complex software
endeavors.”
Martin Fowler
Microservices Premium
15. 15
The Go programming language was conceived in late 2007 as an answer to some of the problems we were seeing developing
software infrastructure at Google. The computing landscape today is almost unrelated to the environment in which the
languages being used, mostly C++, Java, and Python, had been created. The problems introduced by multicore processors,
networked systems, massive computation clusters, and the web programming model were being worked around rather than
addressed head-on. Moreover, the scale has changed: today's server programs comprise tens of millions of lines of code, are
worked on by hundreds or even thousands of programmers, and are updated literally every day. To make matters worse, build
times, even on large compilation clusters, have stretched to many minutes, even hours.
Go was designed and developed to make working in this environment more productive. Besides its better-known aspects such
as built-in concurrency and garbage collection, Go's design considerations include rigorous dependency management, the
adaptability of software architecture as systems grow, and robustness across the boundaries between components.
From keynote talk given by Rob Pike at the SPLASH 2012 conference in Tucson, Arizona, on October 25, 2012.
Go is a compiled, concurrent, garbage-collected, statically typed language developed at Google. It is an open source project:
Google imports the public repository rather than the other way around.
Go is efficient, scalable, and productive.
Go at Google
Go programming language roots
19. 19
Go does have address the issues that make large-scale software development difficult. These issues include:
• slow builds
• uncontrolled dependencies
• each programmer using a different subset of the language
• poor program understanding (code hard to read, poorly documented, and so on)
• duplication of effort
• cost of updates
• version skew
• difficulty of writing automatic tools
• cross-language builds
Go Benefits
20. 20
import "encoding/json"
The first step to making Go scale, dependency-wise, is that the language defines that unused dependencies are a compile-
time error (not a warning, an error). If the source file imports a package it does not use, the program will not compile. This
guarantees by construction that the dependency tree for any Go program is precise, that it has no extraneous edges. That, in
turn, guarantees that no extra code will be compiled when building the program, which minimizes compilation time.
Dependencies in Go
21. 21
package json
The design of Go's package system combines some of the properties of libraries, name spaces, and modules into a single
construct.
Remote packages
go get github.com/4ad/doozer // Shell command to fetch package
import "github.com/4ad/doozer" // Doozer client's import statement
var client doozer.Conn // Client's use of package
Packages in Go
22. 22
For a systems language, garbage collection can be a controversial feature, yet we spent very little time deciding that Go
would be a garbage-collected language. Go has no explicit memory-freeing operation: the only way allocated memory returns
to the pool is through the garbage collector.
It was an easy decision to make because memory management has a profound effect on the way a language works in practice.
In C and C++, too much programming effort is spent on memory allocation and freeing. The resulting designs tend to expose
details of memory management that could well be hidden; conversely memory considerations limit how they can be used. By
contrast, garbage collection makes interfaces easier to specify.
Moreover, in a concurrent object-oriented language it's almost essential to have automatic memory management because the
ownership of a piece of memory can be tricky to manage as it is passed around among concurrent executions. It's important
to separate behavior from resource management.
The language is much easier to use because of garbage collection.
Garbage collection in Go
23. 23
Go's use is growing inside Google.
Several big user-facing services use it, including youtube.com and dl.google.com (the download server that delivers Chrome,
Android and other downloads), as well as our own golang.org. And of course many small ones do, mostly built using Google
App Engine's native support for Go.
• Many other companies use Go as well; the list is very long, but a few of the better known are:
• BBC Worldwide
• Canonical
• Heroku
• Nokia
• SoundCloud
It looks like Go is meeting its goals. Still, it's too early to declare it a success. We don't have enough experience yet,
especially with big programs (millions of lines of code) to know whether the attempts to build a scalable language have paid
off. All the indicators are positive though.
Summary
25. 25
Bee tool: rapid development
“Bee tool is a project that helps
develop beego rapidly. With bee
tool we can create, auto compile
and reload, develop, test, and
deploy beego applications easily.”
Beego web site
26. 26
Bee tool: new MVC website in 3 seconds
“The new command can create a
new web project. You can create a
new beego project by typing bee
new <project name> under
$GOPATH/src. It will generate all
the project folders and files.”
Beego web site
27. 27
Bee tool: new MVC website in 3 seconds
“The new command can create a
new web project. You can create a
new beego project by typing bee
new <project name> under
$GOPATH/src. It will generate all
the project folders and files.”
Beego web site
28. 28
Bee tool: new MVC website in 3 seconds
To run new application just from
command line just use Run
command.
30. 30
Bee tool: new MVC website in 3 seconds
Go build command is used to
compress the project into a single
file. Then we can run web
application as a single file.
32. 32
Bee tool: new API website in 3 seconds
The api command can create a
new API project.
33. 33
Bee tool: new API website in 3 seconds
Creating documentation and
running.
34. 34
Bee tool: new API website in 3 seconds
Creating documentation and
running.
35. 35
Swagger
“Swagger is a simple yet powerful
representation of your RESTful
API. With a Swagger-enabled API,
you get interactive
documentation, client SDK
generation and discoverability.
Swagger helps companies like
Apigee, Getty Images, Intuit,
LivingSocial, McKesson, Microsoft,
Morningstar, and PayPal build the
best possible services with RESTful
APIs.
Now in version 2.0, Swagger is
more enabling than ever. And it's
100% open source software.”
Swagger web site
36. 36
Swagger
Its possible to review and query
web API with just a browser page.
Immediate results upon your
requests.
37. 37
Swagger
Adding data thru API? Testing
implementation? Checking API
availability? It’s everything is so
simple.
39. 39
Building an API is a multi-step process. The API first gets
designed, resources and associated actions are identified,
the request endpoints, payloads and parameters all get
defined. Once that’s done the design goes trough a
review process: will the UI another team has to build on
top have all the information it requires? will dependent
service X be able to list the resources it needs efficiently?
will dependent service Y be able to update the fields of
this other resource? After a few back and forth it’s time
to actually implement the API. And after a while it’s back
to square 1 with new requirements for APIv2.
GOA: Design-based HTTP microservice development in Go
40. 40
Code Generation
Goa relies on code generation to alleviate the need for
reflection or repetitive coding. The goagen tool analyzes
the API design and produces various artifacts including
code, documentation, tests or even your own output. The
end result is application code that is clean and terse.
Design Based
The goa language allows writing self-explanatory code
that describes the design of the API. The description
focuses on listing the resources and the actions they
support. The goa language is flexible and stays out of the
way, you get to decide how your API should work.
GOA: Design-based HTTP microservice development in Go
41. 41
Goa lets you write the specification of your API in code. It then uses that code to produce a number of outputs including HTTP
handlers that take care of validating the incoming requests. This means that the specification is translated automatically into
the implementation, what got reviewed is whatis implemented.
The final implementation, however, is very familiar looking and can plug-in to many existing HTTP processing packages. HTTP
requests are accepted by the net/http server, routed by a router (goa uses httprouter) and handled by the application code.
The only difference being that the application code is composed of two parts: the generated handler which validates the
request and creates the context object (more on that later) and the user code that provides the business logic.
GOA: Design-based HTTP microservice development in Go
43. 43
GOA: Design language
Now that we have defined our API we need to define the show bottle request endpoint.
44. 44
GOA: Design language
A resource may specify a default media type used to render OK responses. In goa the media
type describes the data structure rendered in the response body. In the example the Bottle
resource refers to the BottleMedia media type.
45. 45
GOA: The Magic - Code Generation
The purpose of specifying the API using a DSL is to make it executable. In Go the preferred
method for this is to generate code and this is the path goa takes. goa comes with the
goagen tool which is the goa code generator.
51. 51
SERVICE MONITORING: What is Prometheus?
Prometheus is an open-source systems monitoring and alerting toolkit originally built at
SoundCloud. Since its inception in 2012, many companies and organizations have adopted
Prometheus, and the project has a very active developer and user community. It is now a
standalone open source project and maintained independently of any company.
55. 55
SERVICE MONITORING: Prometheus
When does it fit?
Prometheus works well for recording any purely numeric time series. It fits both machine-centric
monitoring as well as monitoring of highly dynamic service-oriented architectures. In a world of
microservices, its support for multi-dimensional data collection and querying is a particular
strength.
Prometheus is designed for reliability, to be the system you go to during an outage to allow you
to quickly diagnose problems. Each Prometheus server is standalone, not depending on network
storage or other remote services. You can rely on it when other parts of your infrastructure are
broken, and you do not have to set up complex infrastructure to use it.
When does it not fit?
Prometheus values reliability. You can always view what statistics are available about your
system, even under failure conditions. If you need 100% accuracy, such as for per-request billing,
Prometheus is not a good choice as the collected data will likely not be detailed and complete
enough. In such a case you would be best off using some other system to collect and analyse the
data for billing, and Prometheus for the rest of your monitoring.
57. 57
SERVICE MONITORING: Influxdata
THE “T” IN THE TICK STACK
Telegraf is an open source agent written in Go for
collecting metrics and data on the system it's
running on or from other services. Telegraf then
writes the data to InfluxDB in the correct format.
58. 58
SERVICE MONITORING: Influxdata
THE “I” IN THE TICK STACK
InfluxDB is an open source database written in Go
specifically to handle time series data with high
availability and performance requirements.
InfluxDB installs in minutes without external
dependencies, yet is flexible and scalable enough
for complex deployments.
59. 59
SERVICE MONITORING: Influxdata
THE “C” IN THE TICK STACK
Chronograf is a single binary web application that
you can deploy behind your firewall to do ad hoc
exploration of your time series data in InfluxDB. It
includes a library of intelligent, pre-configured
dashboards for common data sets.
60. 60
SERVICE MONITORING: Influxdata
THE “K” IN THE TICK STACK
Kapacitor is a data processing engine. It can
process both stream (subscribe realtime) and
batch (bulk query) data from InfluxDB. Kapacitor
lets you define custom logic to process alerts with
dynamic thresholds, match metrics for patterns,
compute statistical anomalies, etc.
62. 62
CLUSTER AND BALANCING: GO-CIRCUIT
The CIRCUIT is a new way of thinking. It is
deceptively similar to existing software, while
being quite different.
Circuit is a programmable platform-as-a-service
(PaaS) and/or Infrastructure-as-a-Service (IaaS),
for management, discovery, synchronization and
orchestration of services and hosts comprising
cloud applications.
Circuit was designed to enable clear, accountable
and safe interface between the human
engineering roles in a technology enterprise,
ultimately increasing productivity. Engineering
role separation in a typical circuit-based
architecture is illustrated at the picture.
63. 63
CLUSTER AND BALANCING: GO-CIRCUIT
Users of circuit are
• Operations engineers, who sustain cloud
applications at host, process and network level
• Data scientists, who develop distributed
compute pipelines by linking together and
distributing third-party utilities
• Manufacturers of distributed software, who
wish to codify installation and maintenance
procedures in a standardized fashion instead
of communicating them through
documentation (viz. MySQL)
64. 64
CLUSTER AND BALANCING: GO-CIRCUIT
A few technical features of circuit:
• Single- and multi-datacenter out-of-the-box
• Authentication and security of system traffic
• TCP- and UDP multicast-based (similarly to mDNS) internal node discovery
• Zero-configuration/blind-restart for ease on the host provisioning side
• Global, point-of-view consistent key/value space, where keys are hierarchical paths and values
are control objects for data, processes, synchronizations, and so on.
• Consistency guarantees at ultra-high churn rates of physical hosts
• Command-line and programmatic access to the API
• Integration with Docker
65. 65
CLUSTER AND BALANCING: GO-CIRCUIT
In a typical circuit scenario:
• Provisioning engineers ensure newly provisioned machines start the zero-configuration circuit
server as a daemon on startup.
• Operations engineers program start-up as well as dynamic-response behavior via command-line
tool or language bindings.
Adoption considerations:
• Small footprint: Circuit daemons leave almost no communication and memory footprint when
left idle. This makes circuit ideal for incremental adoption alongside pre-existing architectures
• Immediate impact: Even short and simple circuit scripts save manual time going forward
• Knowledge accounting: Circuit scripts can replace textual post-mortem reports with executable
discovery, diagnosis, action and inaction recipes.
• Circuit servers log all operations in their execution orders, enabling maximum visibility during
post-factum debugging and analysis.
Programming environment:
• Circuit programs (sequences of invocations of the circuit API) are not declarative (as in Puppet,
Chef, etc.). They are effectively imperative programs in the CSP concurrency model, which
allows engineers to encode complex dynamic response behavior, spanning multiple data centers.
66. 66
Example: Make a process
The purpose of each circuit server is to host a
collection of control primitives, called elements,
on behalf of the user. On each server the hosted
elements are organized in a hierarchy (similarly to
the file system in Apache Zookeeper), whose
nodes are called anchors. Anchors (akin to file
system directories) have names and each anchor
can host one circuit element or be empty.
The hierarchies of all servers are logically unified
by a global circuit root anchor, whose children are
the individual circuit server hierarchies.
67. 67
Example: Make a docker container
Much like for the case of OS processes, the circuit
can create, manage and synchronize Docker
containers, and attach the corresponding docker
elements to a path in the anchor file system.
To allow creation of docker elements, any
individual server must be started with the -docker
switch.
69. 69
GO-KIT
“Go kit is a distributed programming toolkit for building microservices in large organizations. We
solve common problems in distributed systems, so you can focus on your business logic.
Go kit composed of multiple co-related packages, that together form an opinionated framework for
constructing large SOAs. The toolkit should be comprehensive, ticking all of the boxes that are
important to system architects. It should do that while encoding strong opinions and conventions,
informed by the operational experience of its contributors, as well as prior art like Finagle. And it
should integrate with the most common infrastructural components, to reduce deployment friction
and promote interop with existing systems.”
Peter Bourgon
76. 76
GO DATABASE DRIVERS: MONGO
mgo http://labix.org/mgo
• mgo offers automated cluster topology discovery and maintenance. Even if provided the address
to a single server in the cluster, mgo will figure out the cluster topology and communicate with
any of the servers as necessary.
• mgo will automatically failover in the event that the master server changes.
• mgo offers a synchronous interface, with a concurrent backend. Concurrent operations on the
same socket do not wait for the previous operation's roundtrip before being delivered. Documents
may also start being processed as soon as the first document is received from the network, and
will continue being received in the background so that the connection is unblocked for further
requests.
• mgo offers configurable pre-fetching of documents, so that the next batch of results are requested
automatically when an established percentage of the current batch has been processed.
• etc…
Running MongoDB Queries Concurrently With Go
77. 77
GO DATABASE DRIVERS: CASSANDRA
gocql https://github.com/gocql/gocql
Modern Cassandra client using the native transport
• Automatic type conversations between Cassandra and Go
• Support for all common types including sets, lists and maps
• Custom types can implement a Marshaler and Unmarshaler interface
• Strict type conversations without any loss of precision
• Built-In support for UUIDs (version 1 and 4)
• Support for logged, unlogged and counter batches
• Cluster management
• Automatic reconnect on connection failures with exponential falloff
• Round robin distribution of queries to different hosts
• Round robin distribution of queries to different connections on a host
• Each connection can execute up to n concurrent queries (whereby n is the limit set by the protocol version the client chooses to use)
• Optional automatic discovery of nodes
• Optional support for periodic node discovery via system.peers
• Policy based connection pool with token aware and round-robin policy implementations
• Support for password authentication
• Iteration over paged results with configurable page size
• Support for TLS/SSL
• Optional frame compression (using snappy)
• Automatic query preparation
• Support for query tracing
• Support for Cassandra 2.1+ binary protocol version 3
• Support for up to 32768 streams
• Support for tuple types
• Support for client side timestamps by default
• Support for UDTs via a custom marshaller or struct tags
• An API to access the schema metadata of a given keyspace
79. 79
marcio.io: cheap MapReduce at Go
Sometimes you don’t need overly complex
infrastructures or systems to do a job well. In this
case, we were running these exact same
aggregations over close to 20 EMR instances that
would take a few minutes to execute the entire
MapReduce job over hundreds of Gigabytes of data
each day.
When we decided to take a look at this problem
again, we rewrote this task using Go, and we now
simply run this on a single 8-core machine and the
whole daily execution takes about 10 minutes. We
cut a lot of the costs associated with maintaining
and running these EMR systems and we just schedule
this Go app to run once a day over our daily dataset.
Original Article
81. 81
Introducing Hugo, a new idea around making
website creation simple again. Hugo flexibly
works with many formats and is ideal for
blogs, docs, portfolios and much more.
Hugo’s speed fosters creativity and makes
building a website fun again.
Hugo is quite possibly the easiest to install
software you’ve ever used, simply download
and run. Hugo doesn’t depend on
administrative privileges, databases,
runtimes, interpreters or external libraries.
Sites built with Hugo can be deployed on S3,
GitHub Pages, Dropbox or any web host.
Original article
Make the Web Fun Again
82. 82
ADDITIONAL READING
GOLANG
• Case Studies
• Go language web site
• Little Go book
• Learn Go
• Go search for libraries
SQL DRIVERS
• SQL drivers for go
• Mongo driver for go
• Cassandra driver for go
MICROSERVICES & CLOUDS
• Martin Fowler
• GopherCon 2015 videos
• CoreOS
LOREM IPSUM DOLOR AMET
• Nulla nu nisi
• Risus purus id fusce
• Lobortis ipsum felis sed
ACCELERATORS
• Beego web site
• Swagger web site
• Auto generated docs
API
• Untagling microservices
• Goa design or API DSL
• MapReduce library marcio.io
UNIT TESTING & MONITORING
• Unit Testing with GoConvey
• Monitoring with Prometheus
• Time series with Influxdata
84. 84
Sometimes you don’t need overly
complex infrastructures or systems to do
a job well. In this case, we were running
these exact same aggregations over close
to 20 EMR instances that would take a
few minutes to execute the entire
MapReduce job over hundreds of
Gigabytes of data each day.
When we decided to take a look at this
problem again, we rewrote this task using
Go, and we now simply run this on a
single 8-core machine and the whole daily
execution takes about 10 minutes. We cut
a lot of the costs associated with
maintaining and running these EMR
systems and we just schedule this Go app
to run once a day over our daily dataset.
Original article
Cheap MapReduce in Go
85. 85
We had several clients building hardware
devices that constantly sent in data,
24/7, and we had to collect it and
process it into something useful.
We built the first version of IronWorker
with Ruby. Our sustained CPU usage on
our servers was approximately 50-
60%. When it increased a bit, we’d add
more servers to keep it around 50%.
After we rolled out our Go version, we
reduced our server count to two and we
really only had two for redundancy. They
were barely utilized, it was almost as if
nothing was running on them. Our CPU
utilization was less than 5% and the entire
process started up with only a few
hundred KB’s of memory (on startup) vs
our Rails apps which were ~50MB (on
startup). Compare that even to JVM
memory usage! It was night and day.
Original article
How We Went from 30 Servers to 2
86. 86
Specific things that we love about the
language, the things we learned along the
way. In no specific order, here they are:
• Performance
• Memory
• Concurrency
• Reliability
• Deployment
• Talent
Concurrency is a huge part of Go with some
high level constructs that make it a breeze
to use. I used Java for many years and got
very comfortable with the java concurrency
package, which is a pretty nice set of tools,
but it’s just not the same as Go in terms of
simplicity or the underlying
implementations.
Original article
Go After 2 Years in Production
87. 87
To see more cases of modern companies using Go in production systems please take a look to
this perfect article The Case For Go.
Want more?
89. 89
TJ Holowaychuk, a prominent module writer, made his farewells to Node.js and is turning to
Go, which he calls a “next generation,” programming language in the same company as Rust
and Julia.
He writes in a post published yesterday that Node.js does some things well but it is not
suited to his interests these days in distributed systems. Node.js stresses performance over
usability and robustness. He finds Go “performs better, is easier to maintain, and has better
test coverage since synchronous code is generally nicer and simpler to work with.”
Summarizing, he says Go is robust for its age and refactoring with types is pleasant and simple.
The tooling for profiling and debugging works and the community has “a very strong
conventions regarding documentation, formatting, benchmarking, and API design.”Go’s
primitives are more suited to distributed computing than Node.js’s generators. Node.js does
not have separate stack error handling. Without it, reporting is mediocre. There’s also Go’s
error-handling, too, which Holowaychuk says is superior.
Say Farewell to Node.js and Hello to Go
Say Farewell to Node.js and Hello to Go
90. 90
A lot of other companies are using Go now including Heroku and Google and the people all have
similar opinions. +Rob Pike, one of the creators of Go said:
“We realized that the kind of software we build at Google is not always served well by the
languages we had available,” Pike said in 2011. “Robert Griesemer, Ken Thompson, and myself
decided to make a language that would be very good for writing the kinds of programs we
write at Google.”
+Derek Collison, the founder of Apcera, said recently in a Wired article:
“The management layers and infrastructure layers of the newer technologies that provide this
cloud delivery model?” he tells Wired. “Within two years, a majority will be written in Go.”
Is Go the next gen language we’ve been waiting for? It’s a bit too early to say, but it’s certainly
off to a good start.
CONCLUSION