From 11f291c8fdff5d0b09a01d85373065f9344e4fc5 Mon Sep 17 00:00:00 2001 From: Michael Irwin Date: Fri, 20 Sep 2024 17:08:37 -0400 Subject: [PATCH 1/8] WIP - add learning path for container-supported development --- .../container-supported-development.png | Bin 0 -> 39159 bytes .../container-supported-development.md | 136 ++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 assets/images/learning-paths/container-supported-development.png create mode 100644 content/learning-paths/container-supported-development.md diff --git a/assets/images/learning-paths/container-supported-development.png b/assets/images/learning-paths/container-supported-development.png new file mode 100644 index 0000000000000000000000000000000000000000..a9e09665bbeec622cf807eb52b715c9f4d9a8415 GIT binary patch literal 39159 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 UzGnYH2{og;vMMsUw~U|vKjww4761SM literal 0 HcmV?d00001 diff --git a/content/learning-paths/container-supported-development.md b/content/learning-paths/container-supported-development.md new file mode 100644 index 000000000000..5c0b35a495ce --- /dev/null +++ b/content/learning-paths/container-supported-development.md @@ -0,0 +1,136 @@ +--- +title: "Faster development and testing with container-supported development" +description: | + Use containers in your local development loop to develop and test faster… even if your main app isn't running in containers. +summary: | + Containers don't have to be just for your app. Learn how to run your app's dependent services and other debugging tools to enhance your development environment. +params: + image: images/learning-paths/container-supported-development.png + skill: Beginner + time: TBD + prereq: None +weight: 50 +--- + +{{< columns >}} + +Containers provide a standardized ability to build, share, and run applications. While containers are typically used to containerize your application, they also make it incredibly easy to run essential services needed for development. Instead of installing or connecting to a remote database, you can easily launch your own database. But the possibilities don't stop there. + +With container-supported development, you use containers to enhance your development environment by emulating or running your own instances of the services your app needs. This provides faster feedback loops, less coupling with remote services, and a greater ability to test error states. + +And best of all, you can have these benefits regardless of whether the main app under development is running in containers. + +## Who's this for? + +- Teams that want to reduce the coupling they have on shared or deployed infrastructure or remote API endpoints +- Teams that want to reduce the complexity and costs associated with using cloud services directly during development +- Developers that want to make it easier to visualize what's going on in their databases, queues, etc. +- Teams that want to reduce the complexity of setting up their development environment without impacting the development of the app itself + + + + +## What you'll learn + +- The meaning of container-supported development +- How to connect non-containerized applications to containerized services +- Several examples of using containers to emulate or run local instances of services +- How to use containers to add additional troubleshooting and debugging tools to your development environment + + +## Tools integration + +Works well with Docker Compose and Testcontainers + +{{< /columns >}} + +## Modules + +{{< accordion large=true title=`What is container-supported development?` icon=`play_circle` >}} + +Container-supported development is the idea of using containers to enhance your development environment by running local instances or emulators of the services your application relies on. Once you're using containers, it's easy to add additional services to visualize or troubleshoot what's going on in your services. + +**Duration**: TBD + +{{< youtube-embed "8AqKhEO2PQA" >}} + +{{< /accordion >}} + +{{< accordion large=true title=`Demo: running databases locally` icon=`play_circle` >}} + +With container-supported development, it's easy to run databases locally. In this demo, you'll see how to do so, as well as how to connect a non-containerized application to the database. + +**Duration**: TBD + +{{< youtube-embed "oPGq2AP5OtQ" >}} + +{{< /accordion >}} + +{{< accordion large=true title=`Demo: mocking remote API endpoints` icon=`play_circle` >}} + +Many APIs require data from other data endpoints. In development, this adds complexities such as the sharing of credentials, uptime/availability, and rate limiting. Instead of relying on those services directly, your application can interact with a mock API server. + +This demo will demonstrate how using Wiremock can make it easy to develop and test an application, including the APIs various error states. + + +**Duration**: TBD + +{{< youtube-embed "wvLdInoVBGg" >}} + +{{< /accordion >}} + +{{< accordion large=true title=`Demo: developing the cloud locally` icon=`play_circle` >}} + +When developing apps, it's often easier to outsource aspects of the application to cloud services, such as Amazon S3. However, connecting to those services in local development introduces IAM policies, networking constraints, and provisioning complications. While these requirements are important in a production setting, they complicate development environments significantly. + +With container-supported development, you can run local instances of these services during development and testing, removing the need for complex setups. In this demo, you'll see how LocalStack makes it easy to develop and test applications entirely from the developer's workstation. + +**Duration**: TBD + +{{< youtube-embed "wvLdInoVBGg" >}} + +{{< /accordion >}} + +{{< accordion large=true title=`Demo: adding additional debug and troubleshooting tools` icon=`play_circle` >}} + +Once you start using containers in your development environment, it becomes much easier to add additional containers to visualize the contents of the databases or message queues, seed document stores, or event publishers. In this demo, you'll see a few of these examples, as well as how you can connect multiple containers together to make testing even easier. + +**Duration**: TBD + +{{< youtube-embed "wvLdInoVBGg" >}} + +{{< /accordion >}} + +{{< accordion large=true title=`Common challenges and questions` icon=`quiz` >}} + +### Can I use containers to run services locally even if my main application isn't containerized? + +Yes! But there's one extra step required - exposing the required ports. Once the required ports are exposed on the host, the non-containerized application can connect to the service running in the container. + +### What benefits do I gain by running services in containers over other methods (natively installed, VMs, etc.)? + +Containers provide faster startup times and lower resource consumption compared to VMs. By using containers, you have the ability to package and distribute the services and environment your app needs to run, ensuring everyone on your team can get up and going quickly without spending time installing and troubleshooting native installation issues. + +### Should I worry about emulating services instead of using the real thing during development? + +For many services, such as databases and caches, your application is connecting to the same thing. As an example, your app will use a MySQL database running in a container the same as a managed MySQL database. Therefore, there's no need to worry here. + +When using emulated services, there is always a risk that behavioral differences might occur. Due diligence is required any time you use an emulating service to ensure it has proper tests and is being kept up-to-date with the original service's behaviors. + +### How does running services in containers speed up development and testing? + +Containers allow developers to quickly spin up and tear down services, enabling rapid testing and iteration without the overhead of managing dependencies or system configurations manually. By running services locally, you are able to decouple your application from remote and potentially shared resources. + +### How can I run a completely customized service in my development environment? + +Containers allow you to run any service you'd like. To run customized services, you can build and publish your own images and then use them in your development environment. + +{{< /accordion >}} + +{{< accordion large=true title=`Resources` icon=`link` >}} + +- TBD links to use case guides + +{{< /accordion >}} + +
\ No newline at end of file From 3dbef3ec3843c8b6f3986a768c19ba592272c310 Mon Sep 17 00:00:00 2001 From: Michael Irwin Date: Wed, 9 Oct 2024 11:54:49 -0400 Subject: [PATCH 2/8] Migrate learning path into new guide format --- .../container-supported-development/_index.md | 42 ++++++ .../common-questions.md | 31 ++++ .../demo-additional-tools.md | 11 ++ .../demo-cloud.md | 13 ++ .../demo-databases.md | 11 ++ .../demo-mock-apis.md | 13 ++ .../container-supported-development/why.md | 11 ++ .../container-supported-development.md | 136 ------------------ 8 files changed, 132 insertions(+), 136 deletions(-) create mode 100644 content/guides/container-supported-development/_index.md create mode 100644 content/guides/container-supported-development/common-questions.md create mode 100644 content/guides/container-supported-development/demo-additional-tools.md create mode 100644 content/guides/container-supported-development/demo-cloud.md create mode 100644 content/guides/container-supported-development/demo-databases.md create mode 100644 content/guides/container-supported-development/demo-mock-apis.md create mode 100644 content/guides/container-supported-development/why.md delete mode 100644 content/learning-paths/container-supported-development.md diff --git a/content/guides/container-supported-development/_index.md b/content/guides/container-supported-development/_index.md new file mode 100644 index 000000000000..9f67c4bf37bc --- /dev/null +++ b/content/guides/container-supported-development/_index.md @@ -0,0 +1,42 @@ +--- +title: "Faster development and testing with container-supported development" +linkTitle: Container-supported development +summary: | + Containers don't have to be just for your app. Learn how to run your app's dependent services and other debugging tools to enhance your development environment. +description: | + Use containers in your local development loop to develop and test faster… even if your main app isn't running in containers. +levels: [beginner] +params: + image: images/learning-paths/container-supported-development.png + skill: Beginner + time: TBD + resource_links: [] +--- + +Containers provide a standardized ability to build, share, and run applications. While containers are typically used to containerize your application, they also make it incredibly easy to run essential services needed for development. Instead of installing or connecting to a remote database, you can easily launch your own database. But the possibilities don't stop there. + +With container-supported development, you use containers to enhance your development environment by emulating or running your own instances of the services your app needs. This provides faster feedback loops, less coupling with remote services, and a greater ability to test error states. + +And best of all, you can have these benefits regardless of whether the main app under development is running in containers. + +## What you'll learn + +- The meaning of container-supported development +- How to connect non-containerized applications to containerized services +- Several examples of using containers to emulate or run local instances of services +- How to use containers to add additional troubleshooting and debugging tools to your development environment + +## Who's this for? + +- Teams that want to reduce the coupling they have on shared or deployed infrastructure or remote API endpoints +- Teams that want to reduce the complexity and costs associated with using cloud services directly during development +- Developers that want to make it easier to visualize what's going on in their databases, queues, etc. +- Teams that want to reduce the complexity of setting up their development environment without impacting the development of the app itself + + +## Tools integration + +Works well with Docker Compose and Testcontainers + + +
\ No newline at end of file diff --git a/content/guides/container-supported-development/common-questions.md b/content/guides/container-supported-development/common-questions.md new file mode 100644 index 000000000000..596dda2f74cd --- /dev/null +++ b/content/guides/container-supported-development/common-questions.md @@ -0,0 +1,31 @@ +--- +title: Common challenges and questions +description: Explore common challenges and questions related to Docker Compose. +weight: 60 +--- + + + +### Can I use containers to run services locally even if my main application isn't containerized? + +Yes! But there's one extra step required - exposing the required ports. Once the required ports are exposed on the host, the non-containerized application can connect to the service running in the container. + +### What benefits do I gain by running services in containers over other methods (natively installed, VMs, etc.)? + +Containers provide faster startup times and lower resource consumption compared to VMs. By using containers, you have the ability to package and distribute the services and environment your app needs to run, ensuring everyone on your team can get up and going quickly without spending time installing and troubleshooting native installation issues. + +### Should I worry about emulating services instead of using the real thing during development? + +For many services, such as databases and caches, your application is connecting to the same thing. As an example, your app will use a MySQL database running in a container the same as a managed MySQL database. Therefore, there's no need to worry here. + +When using emulated services, there is always a risk that behavioral differences might occur. Due diligence is required any time you use an emulating service to ensure it has proper tests and is being kept up-to-date with the original service's behaviors. + +### How does running services in containers speed up development and testing? + +Containers allow developers to quickly spin up and tear down services, enabling rapid testing and iteration without the overhead of managing dependencies or system configurations manually. By running services locally, you are able to decouple your application from remote and potentially shared resources. + +### How can I run a completely customized service in my development environment? + +Containers allow you to run any service you'd like. To run customized services, you can build and publish your own images and then use them in your development environment. + +
diff --git a/content/guides/container-supported-development/demo-additional-tools.md b/content/guides/container-supported-development/demo-additional-tools.md new file mode 100644 index 000000000000..faab4b3b6756 --- /dev/null +++ b/content/guides/container-supported-development/demo-additional-tools.md @@ -0,0 +1,11 @@ +--- +title: "Demo: adding additional debug and troubleshooting tools" +description: Learn how you can easily add additional services to make troubleshooting and debugging of tools much easier +weight: 50 +--- + +Once you start using containers in your development environment, it becomes much easier to add additional containers to visualize the contents of the databases or message queues, seed document stores, or event publishers. In this demo, you'll see a few of these examples, as well as how you can connect multiple containers together to make testing even easier. + +{{< youtube-embed 2EqarOM2V4U >}} + +
diff --git a/content/guides/container-supported-development/demo-cloud.md b/content/guides/container-supported-development/demo-cloud.md new file mode 100644 index 000000000000..a5299c5eedd0 --- /dev/null +++ b/content/guides/container-supported-development/demo-cloud.md @@ -0,0 +1,13 @@ +--- +title: "Demo: developing the cloud locally" +description: Learn how you can develop and test against cloud services without actually needing to use the cloud +weight: 40 +--- + +When developing apps, it's often easier to outsource aspects of the application to cloud services, such as Amazon S3. However, connecting to those services in local development introduces IAM policies, networking constraints, and provisioning complications. While these requirements are important in a production setting, they complicate development environments significantly. + +With container-supported development, you can run local instances of these services during development and testing, removing the need for complex setups. In this demo, you'll see how LocalStack makes it easy to develop and test applications entirely from the developer's workstation. + +{{< youtube-embed 2EqarOM2V4U >}} + +
diff --git a/content/guides/container-supported-development/demo-databases.md b/content/guides/container-supported-development/demo-databases.md new file mode 100644 index 000000000000..7238f448cc9e --- /dev/null +++ b/content/guides/container-supported-development/demo-databases.md @@ -0,0 +1,11 @@ +--- +title: "Demo: running databases locally" +description: Learn how you can run databases in a container +weight: 20 +--- + +With container-supported development, it's easy to run databases locally. In this demo, you'll see how to do so, as well as how to connect a non-containerized application to the database. + +{{< youtube-embed 2EqarOM2V4U >}} + +
diff --git a/content/guides/container-supported-development/demo-mock-apis.md b/content/guides/container-supported-development/demo-mock-apis.md new file mode 100644 index 000000000000..0e702cf585c8 --- /dev/null +++ b/content/guides/container-supported-development/demo-mock-apis.md @@ -0,0 +1,13 @@ +--- +title: "Demo: mocking API endpoints" +description: Learn how you can mock API endpoints with containers +weight: 30 +--- + +Many APIs require data from other data endpoints. In development, this adds complexities such as the sharing of credentials, uptime/availability, and rate limiting. Instead of relying on those services directly, your application can interact with a mock API server. + +This demo will demonstrate how using WireMock can make it easy to develop and test an application, including the APIs various error states. + +{{< youtube-embed 2EqarOM2V4U >}} + +
diff --git a/content/guides/container-supported-development/why.md b/content/guides/container-supported-development/why.md new file mode 100644 index 000000000000..e5783e31ec71 --- /dev/null +++ b/content/guides/container-supported-development/why.md @@ -0,0 +1,11 @@ +--- +title: What is container-supported development? +description: Learn what container-supported development is and what it looks like +weight: 10 +--- + +Container-supported development is the idea of using containers to enhance your development environment by running local instances or emulators of the services your application relies on. Once you're using containers, it's easy to add additional services to visualize or troubleshoot what's going on in your services. + +{{< youtube-embed 2EqarOM2V4U >}} + +
diff --git a/content/learning-paths/container-supported-development.md b/content/learning-paths/container-supported-development.md deleted file mode 100644 index 5c0b35a495ce..000000000000 --- a/content/learning-paths/container-supported-development.md +++ /dev/null @@ -1,136 +0,0 @@ ---- -title: "Faster development and testing with container-supported development" -description: | - Use containers in your local development loop to develop and test faster… even if your main app isn't running in containers. -summary: | - Containers don't have to be just for your app. Learn how to run your app's dependent services and other debugging tools to enhance your development environment. -params: - image: images/learning-paths/container-supported-development.png - skill: Beginner - time: TBD - prereq: None -weight: 50 ---- - -{{< columns >}} - -Containers provide a standardized ability to build, share, and run applications. While containers are typically used to containerize your application, they also make it incredibly easy to run essential services needed for development. Instead of installing or connecting to a remote database, you can easily launch your own database. But the possibilities don't stop there. - -With container-supported development, you use containers to enhance your development environment by emulating or running your own instances of the services your app needs. This provides faster feedback loops, less coupling with remote services, and a greater ability to test error states. - -And best of all, you can have these benefits regardless of whether the main app under development is running in containers. - -## Who's this for? - -- Teams that want to reduce the coupling they have on shared or deployed infrastructure or remote API endpoints -- Teams that want to reduce the complexity and costs associated with using cloud services directly during development -- Developers that want to make it easier to visualize what's going on in their databases, queues, etc. -- Teams that want to reduce the complexity of setting up their development environment without impacting the development of the app itself - - - - -## What you'll learn - -- The meaning of container-supported development -- How to connect non-containerized applications to containerized services -- Several examples of using containers to emulate or run local instances of services -- How to use containers to add additional troubleshooting and debugging tools to your development environment - - -## Tools integration - -Works well with Docker Compose and Testcontainers - -{{< /columns >}} - -## Modules - -{{< accordion large=true title=`What is container-supported development?` icon=`play_circle` >}} - -Container-supported development is the idea of using containers to enhance your development environment by running local instances or emulators of the services your application relies on. Once you're using containers, it's easy to add additional services to visualize or troubleshoot what's going on in your services. - -**Duration**: TBD - -{{< youtube-embed "8AqKhEO2PQA" >}} - -{{< /accordion >}} - -{{< accordion large=true title=`Demo: running databases locally` icon=`play_circle` >}} - -With container-supported development, it's easy to run databases locally. In this demo, you'll see how to do so, as well as how to connect a non-containerized application to the database. - -**Duration**: TBD - -{{< youtube-embed "oPGq2AP5OtQ" >}} - -{{< /accordion >}} - -{{< accordion large=true title=`Demo: mocking remote API endpoints` icon=`play_circle` >}} - -Many APIs require data from other data endpoints. In development, this adds complexities such as the sharing of credentials, uptime/availability, and rate limiting. Instead of relying on those services directly, your application can interact with a mock API server. - -This demo will demonstrate how using Wiremock can make it easy to develop and test an application, including the APIs various error states. - - -**Duration**: TBD - -{{< youtube-embed "wvLdInoVBGg" >}} - -{{< /accordion >}} - -{{< accordion large=true title=`Demo: developing the cloud locally` icon=`play_circle` >}} - -When developing apps, it's often easier to outsource aspects of the application to cloud services, such as Amazon S3. However, connecting to those services in local development introduces IAM policies, networking constraints, and provisioning complications. While these requirements are important in a production setting, they complicate development environments significantly. - -With container-supported development, you can run local instances of these services during development and testing, removing the need for complex setups. In this demo, you'll see how LocalStack makes it easy to develop and test applications entirely from the developer's workstation. - -**Duration**: TBD - -{{< youtube-embed "wvLdInoVBGg" >}} - -{{< /accordion >}} - -{{< accordion large=true title=`Demo: adding additional debug and troubleshooting tools` icon=`play_circle` >}} - -Once you start using containers in your development environment, it becomes much easier to add additional containers to visualize the contents of the databases or message queues, seed document stores, or event publishers. In this demo, you'll see a few of these examples, as well as how you can connect multiple containers together to make testing even easier. - -**Duration**: TBD - -{{< youtube-embed "wvLdInoVBGg" >}} - -{{< /accordion >}} - -{{< accordion large=true title=`Common challenges and questions` icon=`quiz` >}} - -### Can I use containers to run services locally even if my main application isn't containerized? - -Yes! But there's one extra step required - exposing the required ports. Once the required ports are exposed on the host, the non-containerized application can connect to the service running in the container. - -### What benefits do I gain by running services in containers over other methods (natively installed, VMs, etc.)? - -Containers provide faster startup times and lower resource consumption compared to VMs. By using containers, you have the ability to package and distribute the services and environment your app needs to run, ensuring everyone on your team can get up and going quickly without spending time installing and troubleshooting native installation issues. - -### Should I worry about emulating services instead of using the real thing during development? - -For many services, such as databases and caches, your application is connecting to the same thing. As an example, your app will use a MySQL database running in a container the same as a managed MySQL database. Therefore, there's no need to worry here. - -When using emulated services, there is always a risk that behavioral differences might occur. Due diligence is required any time you use an emulating service to ensure it has proper tests and is being kept up-to-date with the original service's behaviors. - -### How does running services in containers speed up development and testing? - -Containers allow developers to quickly spin up and tear down services, enabling rapid testing and iteration without the overhead of managing dependencies or system configurations manually. By running services locally, you are able to decouple your application from remote and potentially shared resources. - -### How can I run a completely customized service in my development environment? - -Containers allow you to run any service you'd like. To run customized services, you can build and publish your own images and then use them in your development environment. - -{{< /accordion >}} - -{{< accordion large=true title=`Resources` icon=`link` >}} - -- TBD links to use case guides - -{{< /accordion >}} - -
\ No newline at end of file From 7a4b4d25e827dd2cc68811d12af57b3197bfa05f Mon Sep 17 00:00:00 2001 From: Michael Irwin Date: Wed, 9 Oct 2024 12:33:25 -0400 Subject: [PATCH 3/8] Update content/guides/container-supported-development/_index.md Co-authored-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/guides/container-supported-development/_index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/content/guides/container-supported-development/_index.md b/content/guides/container-supported-development/_index.md index 9f67c4bf37bc..85aa9b03e6a1 100644 --- a/content/guides/container-supported-development/_index.md +++ b/content/guides/container-supported-development/_index.md @@ -8,7 +8,6 @@ description: | levels: [beginner] params: image: images/learning-paths/container-supported-development.png - skill: Beginner time: TBD resource_links: [] --- From fce7e0a355e63cc63e7c1a709028da888fc6cdaa Mon Sep 17 00:00:00 2001 From: Michael Irwin Date: Wed, 9 Oct 2024 12:33:35 -0400 Subject: [PATCH 4/8] Update content/guides/container-supported-development/_index.md Co-authored-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/guides/container-supported-development/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/guides/container-supported-development/_index.md b/content/guides/container-supported-development/_index.md index 85aa9b03e6a1..5056b6d91d8e 100644 --- a/content/guides/container-supported-development/_index.md +++ b/content/guides/container-supported-development/_index.md @@ -12,7 +12,7 @@ params: resource_links: [] --- -Containers provide a standardized ability to build, share, and run applications. While containers are typically used to containerize your application, they also make it incredibly easy to run essential services needed for development. Instead of installing or connecting to a remote database, you can easily launch your own database. But the possibilities don't stop there. +Containers offer a consistent way to build, share, and run applications across different environments. While containers are typically used to containerize your application, they also make it incredibly easy to run essential services needed for development. Instead of installing or connecting to a remote database, you can easily launch your own database. But the possibilities don't stop there. With container-supported development, you use containers to enhance your development environment by emulating or running your own instances of the services your app needs. This provides faster feedback loops, less coupling with remote services, and a greater ability to test error states. From 2f2e04a93120958f73e169c7a8270e5c277a9e35 Mon Sep 17 00:00:00 2001 From: Michael Irwin Date: Fri, 11 Oct 2024 10:59:42 -0400 Subject: [PATCH 5/8] Add correct YT links for the container-supported guide --- .../container-supported-development/demo-additional-tools.md | 2 +- content/guides/container-supported-development/demo-cloud.md | 2 +- .../guides/container-supported-development/demo-databases.md | 2 +- .../guides/container-supported-development/demo-mock-apis.md | 2 +- content/guides/container-supported-development/why.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/content/guides/container-supported-development/demo-additional-tools.md b/content/guides/container-supported-development/demo-additional-tools.md index faab4b3b6756..35a1cc1f1b0f 100644 --- a/content/guides/container-supported-development/demo-additional-tools.md +++ b/content/guides/container-supported-development/demo-additional-tools.md @@ -6,6 +6,6 @@ weight: 50 Once you start using containers in your development environment, it becomes much easier to add additional containers to visualize the contents of the databases or message queues, seed document stores, or event publishers. In this demo, you'll see a few of these examples, as well as how you can connect multiple containers together to make testing even easier. -{{< youtube-embed 2EqarOM2V4U >}} +{{< youtube-embed TCZX15aKSu4 >}}
diff --git a/content/guides/container-supported-development/demo-cloud.md b/content/guides/container-supported-development/demo-cloud.md index a5299c5eedd0..f3a3c8300ef8 100644 --- a/content/guides/container-supported-development/demo-cloud.md +++ b/content/guides/container-supported-development/demo-cloud.md @@ -8,6 +8,6 @@ When developing apps, it's often easier to outsource aspects of the application With container-supported development, you can run local instances of these services during development and testing, removing the need for complex setups. In this demo, you'll see how LocalStack makes it easy to develop and test applications entirely from the developer's workstation. -{{< youtube-embed 2EqarOM2V4U >}} +{{< youtube-embed JtwUMvR5xlY >}}
diff --git a/content/guides/container-supported-development/demo-databases.md b/content/guides/container-supported-development/demo-databases.md index 7238f448cc9e..d125f5a321f9 100644 --- a/content/guides/container-supported-development/demo-databases.md +++ b/content/guides/container-supported-development/demo-databases.md @@ -6,6 +6,6 @@ weight: 20 With container-supported development, it's easy to run databases locally. In this demo, you'll see how to do so, as well as how to connect a non-containerized application to the database. -{{< youtube-embed 2EqarOM2V4U >}} +{{< youtube-embed VieWeXOwKLU >}}
diff --git a/content/guides/container-supported-development/demo-mock-apis.md b/content/guides/container-supported-development/demo-mock-apis.md index 0e702cf585c8..a3ec94037971 100644 --- a/content/guides/container-supported-development/demo-mock-apis.md +++ b/content/guides/container-supported-development/demo-mock-apis.md @@ -8,6 +8,6 @@ Many APIs require data from other data endpoints. In development, this adds comp This demo will demonstrate how using WireMock can make it easy to develop and test an application, including the APIs various error states. -{{< youtube-embed 2EqarOM2V4U >}} +{{< youtube-embed VXSmX6f8vo0 >}}
diff --git a/content/guides/container-supported-development/why.md b/content/guides/container-supported-development/why.md index e5783e31ec71..b498e1db1afe 100644 --- a/content/guides/container-supported-development/why.md +++ b/content/guides/container-supported-development/why.md @@ -6,6 +6,6 @@ weight: 10 Container-supported development is the idea of using containers to enhance your development environment by running local instances or emulators of the services your application relies on. Once you're using containers, it's easy to add additional services to visualize or troubleshoot what's going on in your services. -{{< youtube-embed 2EqarOM2V4U >}} +{{< youtube-embed pNcrto_wGi0 >}}
From dacb39ed05fba65c2d6b0f63af17322341e73355 Mon Sep 17 00:00:00 2001 From: Michael Irwin Date: Fri, 11 Oct 2024 16:29:13 -0400 Subject: [PATCH 6/8] Merge the guide back into a single page --- .../guides/container-supported-development.md | 76 +++++++++++++++++++ .../container-supported-development/_index.md | 41 ---------- .../common-questions.md | 31 -------- .../demo-additional-tools.md | 11 --- .../demo-cloud.md | 13 ---- .../demo-databases.md | 11 --- .../demo-mock-apis.md | 13 ---- .../container-supported-development/why.md | 11 --- 8 files changed, 76 insertions(+), 131 deletions(-) create mode 100644 content/guides/container-supported-development.md delete mode 100644 content/guides/container-supported-development/_index.md delete mode 100644 content/guides/container-supported-development/common-questions.md delete mode 100644 content/guides/container-supported-development/demo-additional-tools.md delete mode 100644 content/guides/container-supported-development/demo-cloud.md delete mode 100644 content/guides/container-supported-development/demo-databases.md delete mode 100644 content/guides/container-supported-development/demo-mock-apis.md delete mode 100644 content/guides/container-supported-development/why.md diff --git a/content/guides/container-supported-development.md b/content/guides/container-supported-development.md new file mode 100644 index 000000000000..4a506b7d9865 --- /dev/null +++ b/content/guides/container-supported-development.md @@ -0,0 +1,76 @@ +--- +title: "Faster development and testing with container-supported development" +linkTitle: Container-supported development +summary: | + Containers don't have to be just for your app. Learn how to run your app's dependent services and other debugging tools to enhance your development environment. +description: | + Use containers in your local development loop to develop and test faster… even if your main app isn't running in containers. +levels: [beginner] +params: + image: images/learning-paths/container-supported-development.png + time: 20 mins + resource_links: [] +--- + +Containers offer a consistent way to build, share, and run applications across different environments. While containers are typically used to containerize your application, they also make it incredibly easy to run essential services needed for development. Instead of installing or connecting to a remote database, you can easily launch your own database. But the possibilities don't stop there. + +With container-supported development, you use containers to enhance your development environment by emulating or running your own instances of the services your app needs. This provides faster feedback loops, less coupling with remote services, and a greater ability to test error states. + +And best of all, you can have these benefits regardless of whether the main app under development is running in containers. + +## What you'll learn + +- The meaning of container-supported development +- How to connect non-containerized applications to containerized services +- Several examples of using containers to emulate or run local instances of services +- How to use containers to add additional troubleshooting and debugging tools to your development environment + +## Who's this for? + +- Teams that want to reduce the coupling they have on shared or deployed infrastructure or remote API endpoints +- Teams that want to reduce the complexity and costs associated with using cloud services directly during development +- Developers that want to make it easier to visualize what's going on in their databases, queues, etc. +- Teams that want to reduce the complexity of setting up their development environment without impacting the development of the app itself + + +## Tools integration + +Works well with Docker Compose and Testcontainers + +## Modules + +### What is container-supported development? + +Container-supported development is the idea of using containers to enhance your development environment by running local instances or emulators of the services your application relies on. Once you're using containers, it's easy to add additional services to visualize or troubleshoot what's going on in your services. + +{{< youtube-embed pNcrto_wGi0 >}} + +### Demo: running databases locally + +With container-supported development, it's easy to run databases locally. In this demo, you'll see how to do so, as well as how to connect a non-containerized application to the database. + +{{< youtube-embed VieWeXOwKLU >}} + +### Demo: mocking API endpoints + +Many APIs require data from other data endpoints. In development, this adds complexities such as the sharing of credentials, uptime/availability, and rate limiting. Instead of relying on those services directly, your application can interact with a mock API server. + +This demo will demonstrate how using WireMock can make it easy to develop and test an application, including the APIs various error states. + +{{< youtube-embed VXSmX6f8vo0 >}} + +### Demo: developing the cloud locally + +When developing apps, it's often easier to outsource aspects of the application to cloud services, such as Amazon S3. However, connecting to those services in local development introduces IAM policies, networking constraints, and provisioning complications. While these requirements are important in a production setting, they complicate development environments significantly. + +With container-supported development, you can run local instances of these services during development and testing, removing the need for complex setups. In this demo, you'll see how LocalStack makes it easy to develop and test applications entirely from the developer's workstation. + +{{< youtube-embed JtwUMvR5xlY >}} + +### Demo: adding additional debug and troubleshooting tools + +Once you start using containers in your development environment, it becomes much easier to add additional containers to visualize the contents of the databases or message queues, seed document stores, or event publishers. In this demo, you'll see a few of these examples, as well as how you can connect multiple containers together to make testing even easier. + +{{< youtube-embed TCZX15aKSu4 >}} + +
\ No newline at end of file diff --git a/content/guides/container-supported-development/_index.md b/content/guides/container-supported-development/_index.md deleted file mode 100644 index 5056b6d91d8e..000000000000 --- a/content/guides/container-supported-development/_index.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: "Faster development and testing with container-supported development" -linkTitle: Container-supported development -summary: | - Containers don't have to be just for your app. Learn how to run your app's dependent services and other debugging tools to enhance your development environment. -description: | - Use containers in your local development loop to develop and test faster… even if your main app isn't running in containers. -levels: [beginner] -params: - image: images/learning-paths/container-supported-development.png - time: TBD - resource_links: [] ---- - -Containers offer a consistent way to build, share, and run applications across different environments. While containers are typically used to containerize your application, they also make it incredibly easy to run essential services needed for development. Instead of installing or connecting to a remote database, you can easily launch your own database. But the possibilities don't stop there. - -With container-supported development, you use containers to enhance your development environment by emulating or running your own instances of the services your app needs. This provides faster feedback loops, less coupling with remote services, and a greater ability to test error states. - -And best of all, you can have these benefits regardless of whether the main app under development is running in containers. - -## What you'll learn - -- The meaning of container-supported development -- How to connect non-containerized applications to containerized services -- Several examples of using containers to emulate or run local instances of services -- How to use containers to add additional troubleshooting and debugging tools to your development environment - -## Who's this for? - -- Teams that want to reduce the coupling they have on shared or deployed infrastructure or remote API endpoints -- Teams that want to reduce the complexity and costs associated with using cloud services directly during development -- Developers that want to make it easier to visualize what's going on in their databases, queues, etc. -- Teams that want to reduce the complexity of setting up their development environment without impacting the development of the app itself - - -## Tools integration - -Works well with Docker Compose and Testcontainers - - -
\ No newline at end of file diff --git a/content/guides/container-supported-development/common-questions.md b/content/guides/container-supported-development/common-questions.md deleted file mode 100644 index 596dda2f74cd..000000000000 --- a/content/guides/container-supported-development/common-questions.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -title: Common challenges and questions -description: Explore common challenges and questions related to Docker Compose. -weight: 60 ---- - - - -### Can I use containers to run services locally even if my main application isn't containerized? - -Yes! But there's one extra step required - exposing the required ports. Once the required ports are exposed on the host, the non-containerized application can connect to the service running in the container. - -### What benefits do I gain by running services in containers over other methods (natively installed, VMs, etc.)? - -Containers provide faster startup times and lower resource consumption compared to VMs. By using containers, you have the ability to package and distribute the services and environment your app needs to run, ensuring everyone on your team can get up and going quickly without spending time installing and troubleshooting native installation issues. - -### Should I worry about emulating services instead of using the real thing during development? - -For many services, such as databases and caches, your application is connecting to the same thing. As an example, your app will use a MySQL database running in a container the same as a managed MySQL database. Therefore, there's no need to worry here. - -When using emulated services, there is always a risk that behavioral differences might occur. Due diligence is required any time you use an emulating service to ensure it has proper tests and is being kept up-to-date with the original service's behaviors. - -### How does running services in containers speed up development and testing? - -Containers allow developers to quickly spin up and tear down services, enabling rapid testing and iteration without the overhead of managing dependencies or system configurations manually. By running services locally, you are able to decouple your application from remote and potentially shared resources. - -### How can I run a completely customized service in my development environment? - -Containers allow you to run any service you'd like. To run customized services, you can build and publish your own images and then use them in your development environment. - -
diff --git a/content/guides/container-supported-development/demo-additional-tools.md b/content/guides/container-supported-development/demo-additional-tools.md deleted file mode 100644 index 35a1cc1f1b0f..000000000000 --- a/content/guides/container-supported-development/demo-additional-tools.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Demo: adding additional debug and troubleshooting tools" -description: Learn how you can easily add additional services to make troubleshooting and debugging of tools much easier -weight: 50 ---- - -Once you start using containers in your development environment, it becomes much easier to add additional containers to visualize the contents of the databases or message queues, seed document stores, or event publishers. In this demo, you'll see a few of these examples, as well as how you can connect multiple containers together to make testing even easier. - -{{< youtube-embed TCZX15aKSu4 >}} - -
diff --git a/content/guides/container-supported-development/demo-cloud.md b/content/guides/container-supported-development/demo-cloud.md deleted file mode 100644 index f3a3c8300ef8..000000000000 --- a/content/guides/container-supported-development/demo-cloud.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Demo: developing the cloud locally" -description: Learn how you can develop and test against cloud services without actually needing to use the cloud -weight: 40 ---- - -When developing apps, it's often easier to outsource aspects of the application to cloud services, such as Amazon S3. However, connecting to those services in local development introduces IAM policies, networking constraints, and provisioning complications. While these requirements are important in a production setting, they complicate development environments significantly. - -With container-supported development, you can run local instances of these services during development and testing, removing the need for complex setups. In this demo, you'll see how LocalStack makes it easy to develop and test applications entirely from the developer's workstation. - -{{< youtube-embed JtwUMvR5xlY >}} - -
diff --git a/content/guides/container-supported-development/demo-databases.md b/content/guides/container-supported-development/demo-databases.md deleted file mode 100644 index d125f5a321f9..000000000000 --- a/content/guides/container-supported-development/demo-databases.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Demo: running databases locally" -description: Learn how you can run databases in a container -weight: 20 ---- - -With container-supported development, it's easy to run databases locally. In this demo, you'll see how to do so, as well as how to connect a non-containerized application to the database. - -{{< youtube-embed VieWeXOwKLU >}} - -
diff --git a/content/guides/container-supported-development/demo-mock-apis.md b/content/guides/container-supported-development/demo-mock-apis.md deleted file mode 100644 index a3ec94037971..000000000000 --- a/content/guides/container-supported-development/demo-mock-apis.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Demo: mocking API endpoints" -description: Learn how you can mock API endpoints with containers -weight: 30 ---- - -Many APIs require data from other data endpoints. In development, this adds complexities such as the sharing of credentials, uptime/availability, and rate limiting. Instead of relying on those services directly, your application can interact with a mock API server. - -This demo will demonstrate how using WireMock can make it easy to develop and test an application, including the APIs various error states. - -{{< youtube-embed VXSmX6f8vo0 >}} - -
diff --git a/content/guides/container-supported-development/why.md b/content/guides/container-supported-development/why.md deleted file mode 100644 index b498e1db1afe..000000000000 --- a/content/guides/container-supported-development/why.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: What is container-supported development? -description: Learn what container-supported development is and what it looks like -weight: 10 ---- - -Container-supported development is the idea of using containers to enhance your development environment by running local instances or emulators of the services your application relies on. Once you're using containers, it's easy to add additional services to visualize or troubleshoot what's going on in your services. - -{{< youtube-embed pNcrto_wGi0 >}} - -
From e6af145b6ea9c624e2b318ccdc34c73deccdb157 Mon Sep 17 00:00:00 2001 From: Michael Irwin Date: Mon, 14 Oct 2024 07:49:10 -0400 Subject: [PATCH 7/8] Update container-supported-development.md Co-authored-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/guides/container-supported-development.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/guides/container-supported-development.md b/content/guides/container-supported-development.md index 4a506b7d9865..c3cc6af0bc81 100644 --- a/content/guides/container-supported-development.md +++ b/content/guides/container-supported-development.md @@ -35,7 +35,7 @@ And best of all, you can have these benefits regardless of whether the main app ## Tools integration -Works well with Docker Compose and Testcontainers +Works well with Docker Compose and Testcontainers. ## Modules From 49d64120063bdb0473caf0406208bad0909e25ef Mon Sep 17 00:00:00 2001 From: Michael Irwin Date: Mon, 14 Oct 2024 07:49:15 -0400 Subject: [PATCH 8/8] Update container-supported-development.md Co-authored-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/guides/container-supported-development.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/guides/container-supported-development.md b/content/guides/container-supported-development.md index c3cc6af0bc81..52879478303a 100644 --- a/content/guides/container-supported-development.md +++ b/content/guides/container-supported-development.md @@ -8,7 +8,7 @@ description: | levels: [beginner] params: image: images/learning-paths/container-supported-development.png - time: 20 mins + time: 20 minutes resource_links: [] ---