What you will learn in Shipping Go: Develop, deliver, discuss, design, and go again
Develop, deliver, discuss, design, and go again
Chapter by chapter
Concepts explained in this book
- testA test case is a defined set of inputs, conditions, and expected results for evaluating software behavior.
- unit testUnit testing evaluates individual units of code independently and focuses on a small portion of a program.
- deploymentSoftware deployment is the process of making a product available for use on a server or other execution environment.
- containerA container is an isolated operating-system-level execution environment that packages an application with its dependencies.
- dependency injectionDependency injection is a software design technique in which a component receives the services or objects it depends on from outside rather than constructing them itself.
- standardStandardization is the process of making work methods and outputs uniform through defined practices.
- pipelineA software delivery pipeline is an ordered set of automated stages that processes code from a change through validation and delivery.
- mockingA mock is a programmable test double that records or verifies interactions and can return controlled results or errors.
- continuous improvementA feedback cycle is a recurring process in which outcomes or evaluations inform corrective action and subsequent improvement.
- serverless computingFunction as a Service is a cloud service model that executes individual functions on demand while hiding server and runtime management from the developer.
- deployment pipelineA deployment pipeline is an automated sequence of steps that builds, verifies, and delivers software to a deployment environment.
- deliverySoftware delivery is the act of shipping a software artifact to make it available to users or other consumers.
- refactoringRefactoring is the restructuring of existing source code to improve its internal design without changing its externally observable behavior.
- contractA defined interface through which software components or users interact with an application or service.
- static analysisStatic code analysis is the automated examination of source code without executing it to identify defects, suspicious constructs, style violations, or security risks.
- continuous integrationContinuous integration is a software development practice in which code changes are frequently merged into a shared codebase and automatically built and verified.
- feedbackFeedback is information about a product or process obtained from evaluation, use, or other responses that can guide subsequent changes.
- container imageA container image is a packaged, immutable filesystem and metadata bundle from which a container can be created.
- stubA stub is a test replacement for a dependency that returns predetermined results without reproducing the dependency's full behavior.
- code coverageTest coverage is a measure of how much of a system's code or behavior is exercised by tests.
- automationAn automated process is a software or operational procedure executed by systems with limited or no manual intervention.
- code reviewA code review process is a defined process for examining source code to assess its quality and provide feedback.
- container runtimeA container runtime is software that creates and executes containers using operating-system isolation mechanisms.
- documentationSoftware documentation is written information that explains software code, behavior, usage, or design.
- behavior-driven developmentBehavior-driven development is a software development approach that specifies and verifies behavior in terms of examples meaningful to stakeholders.
- Cloud Native BuildpacksCloud Native Buildpacks is a specification and implementation ecosystem for transforming application source code into container images through composable buildpacks.
- table-driven testTable-driven testing defines multiple test cases as structured data and executes a common test procedure for each case.
- lead timeLead time is the elapsed time from the initiation or request of work until its delivery to the customer.
- platform as a servicePlatform as a Service is a cloud service model that provides a managed application platform while abstracting underlying infrastructure.
- health check endpointA health check endpoint is a network-accessible API endpoint that reports whether a service or deployed application is operating normally.
- environment variableAn environment variable is a named value supplied by the operating system or process environment to configure an application at runtime.
- repositoryA managed storage location for source code and its associated history and development metadata.
- MakefileA Makefile is a configuration file that defines inputs, targets, and command recipes for the Make build automation tool.
- evaluation suiteA test suite is an organized collection of related tests, commonly accompanied by shared setup and teardown behavior.
- assembly lineAn assembly line is a production system that moves work through sequential workstations to create a product.
- testing pyramidA testing pyramid is a testing strategy with many fast unit tests at the base and progressively fewer broader, more expensive tests above them.
- Given/When/Then formatA behavioral-specification format that expresses a scenario as an initial context, an action or event, and an expected outcome.
- abstractionAn abstraction is a simplified interface or representation that exposes essential behavior while hiding implementation details.
- GitHub ActionsA GitHub platform for automating software development workflows through event-triggered jobs and reusable actions.
- integration testIntegration testing verifies functionality between units of software, often including interactions with external dependencies.
- configurationSettings or input values that control an application's behavior independently of its source code.
- GoA statically typed, compiled programming language designed for concise syntax, concurrency, and efficient software development.
- small changeA small piece of work is a development practice of limiting each deliverable to a small, independently manageable unit.
- sanitizationInput sanitation is the processing of incoming values to make them uniform and acceptable before further handling.
- edge caseAn edge case is a rare or extreme input or operating condition that can expose unexpected software behavior.
- secretA secret is sensitive configuration data, such as a credential, stored so authorized automation can access it without exposing its value.
- lintingA linter is a software tool that analyzes source code for programming errors, suspicious constructs, and style violations.
- test doubleA fake is a simplified test double that stands in for an external object, service, or system while providing limited capabilities.
- podA pod is Kubernetes's smallest deployable execution unit, grouping one or more containers with shared networking and storage context.
- GodogGodog is a Go library and test runner for executing Gherkin-based behavior-driven development specifications.
- formattingCode formatting is the automated or manual arrangement of source code according to consistent syntactic and stylistic conventions.
- cycle timeCycle time is the elapsed time required for an individual process step or stage to complete.
- go vetgo vet is a Go distribution tool that reports suspicious constructs in Go source code through static analysis.
- golangci-lintgolangci-lint is an extensible Go linter that aggregates multiple linters and static-analysis checks behind a single command.
- style guideA document that defines conventions and rules for writing source code in a consistent style.
- change requestAn RFC is a written proposal for a software design or change that invites review and discussion before implementation.
- design documentA design document is a written specification that describes a proposed software design, its rationale, and relevant implementation considerations.
- exploratory testingExploratory testing is testing in which testers actively investigate a system and generate test ideas while interacting with it.
- flexibilityFlexibility is the ability of a software system or development process to adapt to changing requirements, inputs, or operating conditions.
- infrastructureThe computing resources, platforms, networks, and supporting software systems required to develop, run, and deliver applications.
- quality gateA quality gate is a checkpoint that evaluates a product or work output before it proceeds to a subsequent production or delivery stage.
- KubernetesKubernetes is an open-source system for automating the deployment, scaling, and management of containerized applications across clusters.
- gitGit is a distributed version-control system for tracking changes to files and coordinating software development.
- atomic testAn atomic test is a narrowly scoped test that exercises an independent unit of behavior with minimal reliance on other components.
- cohesionCohesion is the degree to which the responsibilities of a software module or component belong together.
- generative cultureA generative culture is an organizational culture that prioritizes learning from failure, continuous improvement, capacity, quality, and innovation.
- software artifactA software artifact is a distributable result of software development, such as a library version, executable binary, or container image.
- build timeBuild time is the elapsed duration required to transform source code and inputs into a build artifact.
- DockerDocker is a software platform and toolset for building, distributing, and running containerized applications.
- blameless postmortemA blameless postmortem is a structured review of an incident that seeks its root causes and process improvements without assigning personal blame.
- failure-tolerant cultureA failure-tolerant culture is an organizational environment that accepts mistakes as inevitable and emphasizes detecting, correcting, and learning from them.
- gofmtThe standard Go source-code formatter that applies the language's canonical formatting conventions.
- releaseA release is a prepared software version made available for use by its intended recipients.
- work in progressWork in progress is work that has started but has not yet been completed or delivered.
- four dsThe four Ds are the develop, deliver, discuss, and design stages of an iterative product-development cycle.
- lean principleLean manufacturing is a production approach that minimizes waste and work not directly contributing to customer value.
- value streamThe connected sequence of activities through which work is transformed into value for a customer.
- quality assessmentA quality assessment is an evaluation of software or a development artifact against defined quality criteria.
- feature fileA feature file is a text file that specifies software behavior as features and scenarios for a behavior-driven development test runner.
- base imageA base image is a foundational container image used as the starting point for building another image.
- configmapA configuration map is a Kubernetes resource that stores non-sensitive configuration values separately from the containers that consume them.
- accelerationAcceleration is a product-development phase characterized by rapidly expanding an established product while maintaining direction and operational consistency.
- app.yamlapp.yaml is a YAML configuration file that describes an application deployment for Google App Engine.
- serviceA software component that provides functionality to other components through a defined interaction boundary.
- command-line argumentA named command-line option that supplies a value or modifies a program's execution settings.
- business logicBusiness logic is the application logic that implements domain rules and required business behavior.
- system under testA system under test is the bounded software unit whose behavior is evaluated by a test.
- system testingSystem testing evaluates the overall behavior of an integrated software system.
These guides are generated from the text of Manning books by Manning's knowledge graph and link to the sections they draw on. The full books are available on liveBook and at manning.com.
