Shipping Go: Develop, deliver, discuss, design, and go again

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Build and upgrade an automated software delivery pipeline that supports containerization, integration testing, semantic versioning, automated deployment, and more.In Shipping Go you will learn how to: Develop better software based on feedback from customers Create a development pipeline that turns feedback into features Reduce bugs with pipeline automation that validates code before it is deployed Establish continuous testing for exceptional code quality Serverless, container-based, and server-based deployments Scale your deployment in a cost-effective way Deliver a culture of continuous improvement Shipping Go is a hands-on guide to shipping Go-based software. Author Joel Holmes shows you the easy way to set up development pipelines, fully illustrated with practical examples in the powerful Go language. You’ll put continuous delivery and continuous integration into action, and discover instantly useful guidance on automating your team’s build and reacting with agility to customer demands. Your new pipelines will ferry your projects through production and deployment, and also improve your testing, code quality, and production applications. Purchase of the print book includes a free eBook in PDF, Kindle, and ePub formats from Manning Publications. About the Technology An effective software delivery pipeline automates all stages, from initial design, through development, deployment, and ultimately the usage experience that feeds back into new features and releases. Go embraces the best practices of Continuous Delivery, and adds a few language-specific tools and twists of its own. About the Book Shipping Go shows you how to build Go-specific software development pipelines. You’ll have a basic CI/CD process up and running by the time you finish Chapter 3, along with an iterative process for designing, releasing, and revising your applications. Then, you’ll systematically upgrade your pipeline to support containerization, integration testing, semantic versioning, and automated deployment. A set of handy appendices help you translate these valuable practices to Kotlin, Python, and JavaScript applications.

Author(s): Joel Holmes
Publisher: Manning Publications
Year: 2023

Language: English
Pages: 248

inside front cover
Shipping Go
Copyright
dedication
contents
front matter
preface
acknowledgments
about this book
Who should read this book?
How this book is organized: A roadmap
About the code
liveBook discussion forum
about the author
about the cover illustration
Part 1. Startup
1 Delivering value
1.1 Simple concepts
1.2 Small pieces
1.2.1 Continuous
1.2.2 Process
1.2.3 Quality
1.2.4 Delivery
1.3 Building your product
1.3.1 Initial setup
1.3.2 Basic validation
1.3.3 Zero-cost deployment
1.3.4 Code confidence
1.3.5 Integrations
1.3.6 Portability
1.3.7 Adaptability
1.3.8 User acceptance
1.3.9 Scaled product
1.3.10 End to end
1.4 Feedback loop
Summary
2 Introducing continuous integration
2.1 Where to start?
2.2 A greenfield project
2.3 The assembly line
2.4 Warehouses
2.5 Material
Summary
3 Introducing continuous testing
3.1 What to test
3.2 Writing unit tests
3.3 Refactor, refactor, refactor
3.4 Testing pyramid
3.5 System testing
3.6 Adding it to the pipeline
3.7 Code coverage
Summary
4 Introducing continuous deployment
4.1 Delivery
4.2 Developers as operators
4.3 Setting up a deployment account
4.4 As you like it
4.5 Function as a Service (FaaS)
4.6 Platform as a Service
Summary
Part 2. Scaling
5 Code quality enforcement
5.1 Reviewing code
5.1.1 Keep it small
5.1.2 Keep an open mind
5.1.3 Keep it moving
5.1.4 Keep it interesting
5.1.5 Keep it the same
5.2 Constraints on development
5.3 Standardizing our code through format and lint checks
5.4 Static code analysis
5.5 Code documentation
5.6 Git hooks
5.7 Flow
Summary
6 Testing frameworks, mocking, and dependencies
6.1 Dependency inversion principle
6.2 Defining an interface
6.3 Dependency injection
6.4 Testing stubs
6.5 Mocking
6.5.1 Setting up our test suite
6.5.2 Using our mocks in test
6.6 Fake
6.7 Just the base of the pyramid
Summary
7 Containerized deployment
7.1 What is a container?
7.2 What is a Buildpack?
7.3 Let’s build a container
7.4 Adding a container build to your pipeline
7.5 Deploying to a container runtime
7.6 Writing your own image
7.7 Local environment organization
7.8 Containers, containers everywhere
Summary
Part 3. Going public
8 Configuration management and stable releases
8.1 Configuration
8.2 Advanced configuration
8.2.1 Environmental variables
8.2.2 File
8.2.3 Flag
8.3 Hiding features
8.3.1 Updating the port
8.3.2 External client
8.4 Semantic versioning
8.5 Change log
8.6 Accountability and handling failure
Summary
9 Integration testing
9.1 Phasing out the old
9.2 Behavior-driven design
9.3 Writing BDD tests in Go
9.4 Adding a database
9.5 Releasing
Summary
10 Advanced deployment
10.1 Not quite IaaS
10.2 Your first cluster
10.3 Building blocks
10.4 Scaling and health status
10.5 Automatically deploying
10.6 Deploying Redis using Helm
10.7 Updating deployment configuration
Summary
11 The loop
11.1 Startup
11.2 Acceleration
11.3 Cruising
11.4 Elements of development
11.4.1 Process
11.4.2 Testing
11.4.3 Delivering
11.5 The OODA loop
11.6 Conclusion
Summary
Appendix A. Using Kotlin
A.1 Frameworks
A.2 Coding
A.3 Maven
A.4 Testing
A.5 Linting and the initial pipeline
A.6 Containerizing
Appendix B. Using Python
B.1 Poetry
B.2 Coding
B.3 Testing
B.4 Nox
B.5 Defining the container
B.6 Creating the pipeline
Appendix C. Using JavaScript
C.1 Node Package Manager
C.2 Coding
C.3 Testing
C.4 Linting
C.5 Defining the container
C.6 Building the pipeline
Appendix D. Using Terraform
D.1 Building the image
D.2 Deploying the image
D.3 Creating the pipeline
index
inside back cover