Go in the Cloud - Why People Choose Go for Cloud Computing
1. Go to the Cloud Why do people building cloud computing choose Go? Vladimir Vivien
2. About Me Vladimir Vivien (@VladimirVivien) Staff Engineer, VMware Go book author, technologist
3.What is Cloud Native Computing?
4. Cloud Native Computing A collection of technologies that automates the deployment and management of highly decoupled and resilient application workloads across a uniform abstraction of compute resources to create dynamic and elastic infrastructures.
5.What makes cloud native computing possible?
6. Abstraction The ability of one technology to make it easier to use another technology by hiding its complexities and/or simplifying its representation.
7. Instruction Set Machine Operating Processor Application And so on... Architecture Code System
8. Virtual Machine 1 Important abstraction 1: Virtual networking hardware Virtual storage Hardware as software device (VMs, storage, networking, etc) Virtual Hardware N Hardware
9. Container 1 Container 2 Container 3 Important Container N abstraction 2: Virtual Machine 1 Virtual storage device The containerized process Virtual Hardware N Hardware
10.Abstraction leads to automation.
11.Automation leads to: Programmability Repeatability Resiliency
12.Cloud Native Computing Attributes
13.Cloud native infrastructures ● Abstraction of compute, storage, and networking resources ● Virtualized resources can be programmed via well-defined API endpoints that are consumable over HTTP ● Leading to automation of resource creation, observation, management, and resource teardown ● Creates an elastic infrastructures that are capable of dynamically scale across resources
14.Cloud native applications ● Built as self-contained, portable, and executable resources ● Single binaries packaged to run in lightweight containers ● Built with automated tools for agile deployments ● Run as loosely-coupled services cross-cutting different domains ● Services use HTTP to expose well-defined API endpoints ● Ability to scale and move across compute resources as needed
15.Why Choose Go for Cloud Native Computing?
17.Go has a small language spec and borrows well-known primitives from other languages.
18.Go keywords (all of them)
19.Simple syntax ● Go source code is easy to read ● Newcomers from other languages can learn Go and be productive quickly ● Projects can scale and grow with new members ● Though simplistic in syntax, the Go language allow developers to construct large and complex cloud native systems such as Docker, Kubernetes, Prometheus, Consul, etcd, etc.
21.Go has a powerful type system where all values are required to be typed (implicitly/explicitly) with applied compile-time checks and safety.
23.Type safety ● Supports data type stability in programs at runtime ● The type safety of a program can be verified at compiled time with the ability for programs to scale in size and complexity without data type correctness and safety issues ● This eliminates entire classes of runtime errors that are caused by data and type hazards
25.Go uses simple concurrency primitives known as goroutines with support for inter-process communication via channels.
27. Concurrent Programming ● Uses simple concurrency constructs that are easy to reason about ● Goroutines can multiplex hundreds or even thousands of concurrently running processes efficiently across hardware threads ● Type safe inter-process communication that can be used for synchronization and/or data sharing ● Easily create complex, multi-process, and highly performant concurrent cloud native programs to handle large scale infrastructures and cloud native application workloads
29.Go programs are compiled to include a runtime manager which, among many things, handles memory allocation and garbage collection.