Opis ebooka: Cloud Native Go
What do Docker, Kubernetes, and Prometheus have in common? All of these cloud native technologies are written in the Go programming language. This practical book shows you how to use Go's strengths to develop cloud native services that are scalable and resilient, even in an unpredictable environment. You'll explore the composition and construction of these applications, from lower-level features of Go to mid-level design patterns to high-level architectural considerations.
Each chapter builds on the lessons of the last, walking intermediate to advanced developers through Go to construct a simple but fully featured distributed key-value store. You'll learn best practices for adopting Go as your development language for solving cloud native management and deployment issues.
- Learn how cloud native applications differ from other software architectures
- Understand how Go can solve the challenges of designing scalable distributed services
- Leverage Go's lower-level features, such as channels and goroutines, to implement a reliable cloud native service
- Explore what "service reliability" is and what it has to do with cloud native
- Apply a variety of patterns, abstractions, and tooling to build and manage complex distributed systems
Wybrane bestsellery
-
Autorzy, Joe Reis i Matt Housley, przeprowadzą Cię przez cykl życia inżynierii danych i pokażą, jak połączyć różne technologie chmurowe, aby spełnić potrzeby konsumentów danych w dolnej części strumienia przetwarzania. Dzięki lekturze tej książki dowiesz się, jak zastosować koncepcje generowania,...
Inżynieria danych w praktyce. Kluczowe koncepcje i najlepsze technologie Inżynieria danych w praktyce. Kluczowe koncepcje i najlepsze technologie
(71.40 zł najniższa cena z 30 dni)77.35 zł
119.00 zł(-35%) -
To trzecie, wzbogacone i uzupełnione wydanie praktycznego samouczka, dzięki któremu błyskawicznie rozpoczniesz pracę z Terraform. Zapoznasz się z językiem programowania Terraform i zasadami tworzenia kodu. Szybko zaczniesz wdrażać infrastrukturę i zarządzać nią za pomocą zaledwie kilku poleceń. I...
Terraform. Tworzenie infrastruktury za pomocą kodu. Wydanie III Terraform. Tworzenie infrastruktury za pomocą kodu. Wydanie III
(59.40 zł najniższa cena z 30 dni)64.35 zł
99.00 zł(-35%) -
This book will help you master Kubernetes anti-patterns, enabling you to recognize and overcome common pitfalls, optimize deployments, and excel in today's dynamic tech landscape with confidence.
Kubernetes Anti-Patterns. Overcome common pitfalls to achieve optimal deployments and a flawless Kubernetes ecosystem Kubernetes Anti-Patterns. Overcome common pitfalls to achieve optimal deployments and a flawless Kubernetes ecosystem
Ebooka "Cloud Native Go" przeczytasz na:
-
czytnikach Inkbook, Kindle, Pocketbook, Onyx Boox i innych
-
systemach Windows, MacOS i innych
-
systemach Windows, Android, iOS, HarmonyOS
-
na dowolnych urządzeniach i aplikacjach obsługujących formaty: PDF, EPub, Mobi
Masz pytania? Zajrzyj do zakładki Pomoc »
Audiobooka "Cloud Native Go" posłuchasz:
-
w aplikacji Ebookpoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych
-
na dowolnych urządzeniach i aplikacjach obsługujących format MP3 (pliki spakowane w ZIP)
Masz pytania? Zajrzyj do zakładki Pomoc »
Kurs Video "Cloud Native Go" zobaczysz:
-
w aplikacjach Ebookpoint i Videopoint na Android, iOS, HarmonyOs
-
na systemach Windows, MacOS i innych z dostępem do najnowszej wersji Twojej przeglądarki internetowej
Szczegóły ebooka
- ISBN Ebooka:
- 978-14-920-7628-5, 9781492076285
- Data wydania ebooka:
- 2021-04-20 Data wydania ebooka często jest dniem wprowadzenia tytułu do sprzedaży i może nie być równoznaczna z datą wydania książki papierowej. Dodatkowe informacje możesz znaleźć w darmowym fragmencie. Jeśli masz wątpliwości skontaktuj się z nami sklep@ebookpoint.pl.
- Język publikacji:
- angielski
- Rozmiar pliku ePub:
- 4.6MB
- Rozmiar pliku Mobi:
- 11.9MB
Spis treści ebooka
- Preface
- Who Should Read This Book
- Why I Wrote This Book
- Conventions Used in This Book
- Using Code Examples
- OReilly Online Learning
- How to Contact Us
- Acknowledgments
- I. Going Cloud Native
- 1. What Is a Cloud Native Application?
- The Story So Far
- What Is Cloud Native?
- Scalability
- Loose Coupling
- Resilience
- Manageability
- Observability
- Why Is Cloud Native a Thing?
- Summary
- 2. Why Go Rules the Cloud Native World
- The Motivation Behind Go
- Features for a Cloud Native World
- Composition and Structural Typing
- Comprehensibility
- CSP-Style Concurrency
- Fast Builds
- Linguistic Stability
- Memory Safety
- Performance
- Static Linking
- Static Typing
- Summary
- II. Cloud Native Go Constructs
- 3. Go Language Foundations
- Basic Data Types
- Booleans
- Simple Numbers
- Complex Numbers
- Strings
- Basic Data Types
- Variables
- Short Variable Declarations
- Zero Values
- The Blank Identifier
- Constants
- Container Types: Arrays, Slices, and Maps
- Arrays
- Slices
- Working with slices
- The slice operator
- Strings as slices
- Maps
- Map membership testing
- Pointers
- Control Structures
- Fun with for
- The general for statement
- Looping over arrays and slices
- Looping over maps
- Fun with for
- The if Statement
- The switch Statement
- Error Handling
- Creating an Error
- Putting the Fun in Functions: Variadics and Closures
- Functions
- Multiple return values
- Recursion
- Defer
- Pointers as parameters
- Functions
- Variadic Functions
- Passing slices as variadic values
- Anonymous Functions and Closures
- Structs, Methods, and Interfaces
- Structs
- Methods
- Interfaces
- Type assertions
- The empty interface
- Composition with Type Embedding
- Interface embedding
- Struct embedding
- Promotion
- Directly accessing embedded fields
- The Good Stuff: Concurrency
- Goroutines
- Channels
- Channel blocking
- Channel buffering
- Closing channels
- Looping over channels
- Select
- Implementing channel timeouts
- Summary
- 4. Cloud Native Patterns
- The Context Package
- What Context Can Do for You
- Creating Context
- Defining Context Deadlines and Timeouts
- Defining Request-Scoped Values
- Using a Context
- The Context Package
- Layout of this Chapter
- Stability Patterns
- Circuit Breaker
- Applicability
- Participants
- Implementation
- Sample code
- Circuit Breaker
- Debounce
- Applicability
- Participants
- Implementation
- Sample code
- Retry
- Applicability
- Participants
- Implementation
- Sample code
- Throttle
- Applicability
- Participants
- Implementation
- Sample code
- Timeout
- Applicability
- Participants
- Implementation
- Sample code
- Concurrency Patterns
- Fan-In
- Applicability
- Participants
- Implementation
- Sample code
- Fan-In
- Fan-Out
- Applicability
- Participants
- Implementation
- Sample code
- Future
- Applicability
- Participants
- Implementation
- Sample code
- Sharding
- Applicability
- Participants
- Implementation
- Sample code
- Summary
- 5. Building a Cloud Native Service
- Lets Build a Service!
- Whats a Key-Value Store?
- Lets Build a Service!
- Requirements
- What Is Idempotence and Why Does It Matter?
- The Eventual Goal
- Generation 0: The Core Functionality
- Your Super Simple API
- Generation 1: The Monolith
- Building an HTTP Server with net/http
- Building an HTTP Server with gorilla/mux
- Creating a minimal service
- Initializing your project with Go modules
- Variables in URI paths
- So many matchers
- Building a RESTful Service
- Your RESTful methods
- Implementing the create function
- Implementing the read function
- Making Your Data Structure Concurrency-Safe
- Integrating a read-write mutex into your application
- Generation 2: Persisting Resource State
- Whats a Transaction Log?
- Your transaction log format
- Your transaction logger interface
- Whats a Transaction Log?
- Storing State in a Transaction Log File
- Prototyping your transaction logger
- Defining the event type
- Implementing your FileTransactionLogger
- Creating a new FileTransactionLogger
- Appending entries to the transaction log
- Using a bufio.Scanner to play back file transaction logs
- Your transaction logger interface (redux)
- Initializing the FileTransactionLogger in your web service
- Integrating FileTransactionLogger with your web service
- Future improvements
- Storing State in an External Database
- Working with databases in Go
- Importing a database driver
- Implementing your PostgresTransactionLogger
- Creating a new PostgresTransactionLogger
- Using db.Exec to execute a SQL INSERT
- Using db.Query to play back postgres transaction logs
- Initializing the PostgresTransactionLogger in your web service
- Future improvements
- Generation 3: Implementing Transport Layer Security
- Transport Layer Security
- Certificates, certificate authorities, and trust
- Transport Layer Security
- Private Key and Certificate Files
- Privacy enhanced mail (PEM) file format
- Securing Your Web Service with HTTPS
- Transport Layer Summary
- Containerizing Your Key-Value Store
- Docker (Absolute) Basics
- The Dockerfile
- Building your container image
- Running your container image
- Running your container image
- Issuing a request to a published container port
- Running multiple containers
- Stopping and deleting your containers
- Docker (Absolute) Basics
- Building Your Key-Value Store Container
- Iteration 1: adding your binary to a FROM scratch image
- Iteration 2: using a multi-stage build
- Externalizing Container Data
- Summary
- III. The Cloud Native Attributes
- 6. Its All About Dependability
- Whats the Point of Cloud Native?
- Its All About Dependability
- What Is Dependability and Why Is It So Important?
- Dependability: Its Not Just for Ops Anymore
- Achieving Dependability
- Fault Prevention
- Good programming practices
- Language features
- Scalability
- Loose coupling
- Fault Prevention
- Fault Tolerance
- Fault Removal
- Verification and testing
- Manageability
- Fault Forecasting
- The Continuing Relevance of the Twelve-Factor App
- I. Codebase
- II. Dependencies
- III. Configuration
- IV. Backing Services
- V. Build, Release, Run
- VI. Processes
- VII. Data Isolation
- VIII. Scalability
- IX. Disposability
- X. Development/Production Parity
- XI. Logs
- XII. Administrative Processes
- Summary
- 7. Scalability
- What Is Scalability?
- Different Forms of Scaling
- What Is Scalability?
- The Four Common Bottlenecks
- State and Statelessness
- Application State Versus Resource State
- Advantages of Statelessness
- Scaling Postponed: Efficiency
- Efficient Caching Using an LRU Cache
- Efficient Synchronization
- Share memory by communicating
- Reduce blocking with buffered channels
- Minimizing locking with sharding
- Memory Leaks Canfatal error: runtime: out of memory
- Leaking goroutines
- Forever ticking tickers
- On Efficiency
- Service Architectures
- The Monolith System Architecture
- The Microservices System Architecture
- Serverless Architectures
- The pros and cons of serverlessness
- Serverless services
- Summary
- 8. Loose Coupling
- Tight Coupling
- Tight Coupling Takes Many Forms
- Fragile exchange protocols
- Shared dependencies
- Shared point-in-time
- Fixed addresses
- Tight Coupling Takes Many Forms
- Tight Coupling
- Communications Between Services
- Request-Response Messaging
- Common Request-Response Implementations
- Issuing HTTP Requests with net/http
- Remote Procedure Calls with gRPC
- Interface definition with protocol buffers
- Installing the protocol compiler
- The message definition structure
- The key-value message structure
- Defining our service methods
- Compiling your protocol buffers
- Implementing the gRPC service
- Implementing the gRPC client
- Loose Coupling Local Resources with Plug-ins
- In-Process Plug-ins with the plugin Package
- Plug-in vocabulary
- A toy plug-in example
- The Sayer interface
- The Go plugin code
- Building the plug-ins
- Using our go plug-ins
- Import the plugin package
- Find our plug-in
- Open our plug-in
- Look up your symbol
- Assert and use your symbol
- Executing our example
- In-Process Plug-ins with the plugin Package
- HashiCorps Go Plug-in System over RPC
- Another toy plug-in example
- Common code
- The Sayer interface
- The SayerPlugin struct
- The SayerRPC client implementation
- The handshake configuration
- The SayerRPCServer server implementation
- Our plug-in implementation
- Our host process
- Import the hashicorp/go-plugin and commons packages
- Find our plug-in
- Create our plug-in client
- Connect to our plug-in and dispense our Sayer
- Hexagonal Architecture
- The Architecture
- Implementing a Hexagonal Service
- Our refactored components
- Our first plug
- Our core application
- Our TransactionLogger adapters
- Our FrontEnd port
- Putting it all together
- Summary
- 9. Resilience
- Keeping on Ticking: Why Resilience Matters
- What Does It Mean for a System to Fail?
- Building for Resilience
- Cascading Failures
- Preventing Overload
- Throttling
- Load shedding
- Graceful service degradation
- Preventing Overload
- Play It Again: Retrying Requests
- Backoff Algorithms
- Circuit Breaking
- Timeouts
- Using Context for service-side timeouts
- Timing out HTTP/REST client calls
- Timing out gRPC client calls
- Idempotence
- How do I make my service idempotent?
- What about scalar operations?
- Service Redundancy
- Designing for Redundancy
- Autoscaling
- Healthy Health Checks
- What Does It Mean for an Instance to Be Healthy?
- The Three Types of Health Checks
- Liveness checks
- Shallow health checks
- Deep health checks
- Failing Open
- Summary
- 10. Manageability
- What Is Manageability and Why Should I Care?
- Configuring Your Application
- Configuration Good Practice
- Configuring with Environment Variables
- Configuring with Command-Line Arguments
- The standard flag package
- The Cobra command-line parser
- Configuring with Files
- Our configuration data structure
- Working with JSON
- Encoding JSON
- Decoding JSON
- Field formatting with struct field tags
- Working with YAML
- Encoding YAML
- Decoding YAML
- Struct field tags for YAML
- Watching for configuration file changes
- Making your configuration reloadable
- Polling for configuration changes
- Watching OS filesystem notifications
- Viper: The Swiss Army Knife of Configuration Packages
- Explicitly setting values in Viper
- Working with command-line flags in Viper
- Working with environment variables in Viper
- Working with configuration files in Viper
- Reading configuration files
- Watching and rereading configuration files in Viper
- Using remote key/value stores with Viper
- Setting defaults in Viper
- Feature Management with Feature Flags
- The Evolution of a Feature Flag
- Generation 0: The Initial Implementation
- Generation 1: The Hard-Coded Feature Flag
- Generation 2: The Configurable Flag
- Generation 3: Dynamic Feature Flags
- Dynamic flags as functions
- Implementing a dynamic flag function
- The flag function lookup
- The router function
- Summary
- 11. Observability
- What Is Observability?
- Why Do We Need Observability?
- How Is Observability Different from Traditional Monitoring?
- What Is Observability?
- The Three Pillars of Observability
- OpenTelemetry
- The OpenTelemetry Components
- Tracing
- Tracing Concepts
- Tracing with OpenTelemetry
- Creating the tracing exporters
- The Console Exporter
- The Jaeger Exporter
- Creating the tracing exporters
- Creating a tracer provider
- Setting the global tracer provider
- Obtaining a tracer
- Starting and ending spans
- Setting span metadata
- Attributes
- Events
- Autoinstrumentation
- Autoinstrumenting net/http and gorilla/mux
- Autoinstrumenting gRPC
- Getting the current span from context
- Putting It All Together: Tracing
- The Fibonacci service API
- The Fibonacci service handler
- The service Main function
- Starting your services
- Console exporter output
- Viewing your results in Jaeger
- Metrics
- Push Versus Pull Metric Collection
- Push-based metric collection
- Pull-based metric collection
- But which is better?
- Push Versus Pull Metric Collection
- Metrics with OpenTelemetry
- Creating the metric exporters
- Setting the global meter provider
- Exposing the metrics endpoint
- Obtaining a meter
- Metric instruments
- Synchronous instruments
- Asynchronous instruments
- Putting It All Together: Metrics
- Starting your services
- Metric endpoint output
- Viewing your results in Prometheus
- Logging
- Better Logging Practices
- Treat logs as streams of events
- Structure events for parsing
- Less is (way) more
- Dynamic sampling
- Better Logging Practices
- Logging with Gos Standard log Package
- The special logging functions
- Logging to a custom writer
- Log flags
- The Zap Logging Package
- Creating a Zap logger
- Writing logs with Zap
- Using dynamic sampling in Zap
- Summary
- Index
O'Reilly Media - inne książki
-
Keeping up with the Python ecosystem can be daunting. Its developer tooling doesn't provide the out-of-the-box experience native to languages like Rust and Go. When it comes to long-term project maintenance or collaborating with others, every Python project faces the same problem: how to build re...(203.15 zł najniższa cena z 30 dni)
203.29 zł
239.00 zł(-15%) -
Bringing a deep-learning project into production at scale is quite challenging. To successfully scale your project, a foundational understanding of full stack deep learning, including the knowledge that lies at the intersection of hardware, software, data, and algorithms, is required.This book il...(237.15 zł najniższa cena z 30 dni)
244.53 zł
279.00 zł(-12%) -
Frontend developers have to consider many things: browser compatibility, usability, performance, scalability, SEO, and other best practices. But the most fundamental aspect of creating websites is one that often falls short: accessibility. Accessibility is the cornerstone of any website, and if a...(202.60 zł najniższa cena z 30 dni)
202.55 zł
239.00 zł(-15%) -
In this insightful and comprehensive guide, Addy Osmani shares more than a decade of experience working on the Chrome team at Google, uncovering secrets to engineering effectiveness, efficiency, and team success. Engineers and engineering leaders looking to scale their effectiveness and drive tra...(116.53 zł najniższa cena z 30 dni)
116.48 zł
149.00 zł(-22%) -
Data modeling is the single most overlooked feature in Power BI Desktop, yet it's what sets Power BI apart from other tools on the market. This practical book serves as your fast-forward button for data modeling with Power BI, Analysis Services tabular, and SQL databases. It serves as a starting ...(202.78 zł najniższa cena z 30 dni)
202.28 zł
239.00 zł(-15%) -
C# is undeniably one of the most versatile programming languages available to engineers today. With this comprehensive guide, you'll learn just how powerful the combination of C# and .NET can be. Author Ian Griffiths guides you through C# 12.0 and .NET 8 fundamentals and techniques for building c...(245.09 zł najniższa cena z 30 dni)
244.59 zł
279.00 zł(-12%) -
Learn how to get started with Futures Thinking. With this practical guide, Phil Balagtas, founder of the Design Futures Initiative and the global Speculative Futures network, shows you how designers and futurists have made futures work at companies such as Atari, IBM, Apple, Disney, Autodesk, Luf...(150.10 zł najniższa cena z 30 dni)
150.00 zł
179.00 zł(-16%) -
Augmented Analytics isn't just another book on data and analytics; it's a holistic resource for reimagining the way your entire organization interacts with information to become insight-driven.Moving beyond traditional, limited ways of making sense of data, Augmented Analytics provides a dynamic,...(178.05 zł najniższa cena z 30 dni)
177.85 zł
209.00 zł(-15%) -
Learn how to prepare for—and pass—the Kubernetes and Cloud Native Associate (KCNA) certification exam. This practical guide serves as both a study guide and point of entry for practitioners looking to explore and adopt cloud native technologies. Adrián González Sánchez ...
Kubernetes and Cloud Native Associate (KCNA) Study Guide Kubernetes and Cloud Native Associate (KCNA) Study Guide
(169.14 zł najniższa cena z 30 dni)177.65 zł
199.00 zł(-11%) -
Python is an excellent way to get started in programming, and this clear, concise guide walks you through Python a step at a time—beginning with basic programming concepts before moving on to functions, data structures, and object-oriented design. This revised third edition reflects the gro...(143.54 zł najniższa cena z 30 dni)
143.04 zł
179.00 zł(-20%)
Dzieki opcji "Druk na żądanie" do sprzedaży wracają tytuły Grupy Helion, które cieszyły sie dużym zainteresowaniem, a których nakład został wyprzedany.
Dla naszych Czytelników wydrukowaliśmy dodatkową pulę egzemplarzy w technice druku cyfrowego.
Co powinieneś wiedzieć o usłudze "Druk na żądanie":
- usługa obejmuje tylko widoczną poniżej listę tytułów, którą na bieżąco aktualizujemy;
- cena książki może być wyższa od początkowej ceny detalicznej, co jest spowodowane kosztami druku cyfrowego (wyższymi niż koszty tradycyjnego druku offsetowego). Obowiązująca cena jest zawsze podawana na stronie WWW książki;
- zawartość książki wraz z dodatkami (płyta CD, DVD) odpowiada jej pierwotnemu wydaniu i jest w pełni komplementarna;
- usługa nie obejmuje książek w kolorze.
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka, którą chcesz zamówić pochodzi z końcówki nakładu. Oznacza to, że mogą się pojawić drobne defekty (otarcia, rysy, zagięcia).
Co powinieneś wiedzieć o usłudze "Końcówka nakładu":
- usługa obejmuje tylko książki oznaczone tagiem "Końcówka nakładu";
- wady o których mowa powyżej nie podlegają reklamacji;
Masz pytanie o konkretny tytuł? Napisz do nas: sklep[at]helion.pl.
Książka drukowana
Oceny i opinie klientów: Cloud Native Go Matthew A. Titmus (0) Weryfikacja opinii następuję na podstawie historii zamówień na koncie Użytkownika umieszczającego opinię. Użytkownik mógł otrzymać punkty za opublikowanie opinii uprawniające do uzyskania rabatu w ramach Programu Punktowego.