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

Build and upgrade an automated software delivery pipeline that supports containerization, integration testing, semantic

429 123 4MB

English Pages 248 Year 2023

Report DMCA / Copyright

DOWNLOAD FILE

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

Table of contents :
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

Polecaj historie