Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Real world applications of containerized development #122

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1133 commits
Select commit Hold shift + click to select a range
c73a014
moved content to the articles folder
bellatrick Nov 20, 2024
3d892a0
added article on dev inside containers
JohnnieJnr Aug 19, 2024
0cd00d4
added author info
JohnnieJnr Aug 19, 2024
971932a
rewrote the article taking into the consideration the neccessary corr…
JohnnieJnr Aug 20, 2024
455cfe1
included tldr and relevant links to sitemap
JohnnieJnr Aug 20, 2024
4785375
grammar check, reduced verbosity
JohnnieJnr Aug 29, 2024
43df8d6
added company logo
JohnnieJnr Aug 29, 2024
2897e84
updated and tested code snippets
JohnnieJnr Sep 6, 2024
5109daf
fixed lint issues
JohnnieJnr Sep 6, 2024
8138fbd
fixed merge conflict
JohnnieJnr Sep 6, 2024
46c3ff5
update
JohnnieJnr Sep 6, 2024
f210335
update
JohnnieJnr Sep 6, 2024
ef00334
fixed merge conflict
JohnnieJnr Sep 10, 2024
9bb6068
Introducing Daytona Project Config: Simplify and Streamline Workspace…
divanshu-go Sep 10, 2024
a5283c5
refactor , resolve , do lint
divanshu-go Nov 17, 2024
6aebe4e
refactor , resolve , do lint
divanshu-go Nov 17, 2024
d1c733e
refactor , resolve , do lint
divanshu-go Nov 17, 2024
23a9162
add images and fix broken link in refrence
divanshu-go Nov 21, 2024
d7644b8
improve quality of article
divanshu-go Nov 22, 2024
d3f9c71
Improve quality of article and fix lint
divanshu-go Nov 27, 2024
abb8a20
fixed linting issues and changes some rules
mojafa Dec 3, 2024
e7e44df
removed some deprecated dependencies
mojafa Dec 3, 2024
1daa304
removed some deprecated dependencies
mojafa Dec 3, 2024
e76ee2b
update
JohnnieJnr Dec 5, 2024
48e0d68
docs(1): thoughless oss always dies
hunxjunedo Aug 20, 2024
c312cbe
apply suggested changes
hunxjunedo Aug 23, 2024
47cb0c4
apply the requested changes
hunxjunedo Sep 3, 2024
f3a262a
enhance author description
hunxjunedo Sep 3, 2024
7d1a359
Added first draft of article
bellatrick Sep 10, 2024
818c6b5
refined md file structure
bellatrick Sep 10, 2024
57bdd2c
edited grammar and added image illustration
bellatrick Sep 11, 2024
a3fb291
checked grammar mistakes, linting issues and added a section for best…
bellatrick Sep 11, 2024
11cf310
removed --code flag from daytona create command
bellatrick Nov 13, 2024
40b33b1
Daytona Office Hours 7
harshbisle Sep 10, 2024
910c0b6
proofread
harshbisle Sep 10, 2024
f1bd72c
follow heading style guide
harshbisle Sep 10, 2024
e041165
follow heading style guide
harshbisle Sep 10, 2024
6c61dac
update
harshbisle Sep 10, 2024
8965872
minor update
harshbisle Sep 11, 2024
269e26b
Modified reviewing file. Signed-off-by: mojafa <[email protected]>
mojafa Nov 11, 2024
2130b23
Modified reviewing file. Signed-off-by: mojafa <[email protected]>
mojafa Nov 11, 2024
7f8d219
Added Fly-Provider Docs
scshiv29-dev Nov 7, 2024
d740244
Updated article
scshiv29-dev Nov 11, 2024
dbd9412
fixed typos and removed commands not working
scshiv29-dev Nov 11, 2024
5ac1acd
removed -t flag
scshiv29-dev Nov 12, 2024
d8b0c57
moved content to the articles folder
bellatrick Nov 20, 2024
38a14d5
added article on dev inside containers
JohnnieJnr Aug 19, 2024
bf78af4
added author info
JohnnieJnr Aug 19, 2024
f1c3c49
rewrote the article taking into the consideration the neccessary corr…
JohnnieJnr Aug 20, 2024
fe04205
included tldr and relevant links to sitemap
JohnnieJnr Aug 20, 2024
a9f1f6f
grammar check, reduced verbosity
JohnnieJnr Aug 29, 2024
1a9da71
added company logo
JohnnieJnr Aug 29, 2024
f198e20
updated and tested code snippets
JohnnieJnr Sep 6, 2024
2b4d406
fixed lint issues
JohnnieJnr Sep 6, 2024
06a2af0
fixed merge conflict
JohnnieJnr Sep 6, 2024
897fe63
update
JohnnieJnr Sep 6, 2024
a4fefed
update
JohnnieJnr Sep 6, 2024
7a924f9
fixed merge conflict
JohnnieJnr Sep 10, 2024
9ce456e
Introducing Daytona Project Config: Simplify and Streamline Workspace…
divanshu-go Sep 10, 2024
50a978e
refactor , resolve , do lint
divanshu-go Nov 17, 2024
d74c58d
refactor , resolve , do lint
divanshu-go Nov 17, 2024
ac00468
refactor , resolve , do lint
divanshu-go Nov 17, 2024
0d57f2b
add images and fix broken link in refrence
divanshu-go Nov 21, 2024
701b4c6
improve quality of article
divanshu-go Nov 22, 2024
d23fde1
Improve quality of article and fix lint
divanshu-go Nov 27, 2024
5018ab3
fixed linting issues and changes some rules
mojafa Dec 3, 2024
b7882ef
removed some deprecated dependencies
mojafa Dec 3, 2024
7bbae4d
removed some deprecated dependencies
mojafa Dec 3, 2024
237d3f5
initial commit for case study article on contanerized development
JohnnieJnr Sep 10, 2024
d9160fb
initial commit for dotfiles article
JohnnieJnr Sep 19, 2024
1f2358f
added references, project dir structure, troubleshooting tips
JohnnieJnr Nov 23, 2024
f9a5454
added rules for imgs and tables
nkkko Aug 20, 2024
e64cacc
Parallel Submissions
nkkko Aug 20, 2024
63742c1
Code Contributions
nkkko Aug 20, 2024
72e0b14
templates update
nkkko Aug 20, 2024
ad2a69b
testing vaunt.dev
nkkko Aug 21, 2024
f4b9d87
updated 1:1 ratio
nkkko Aug 21, 2024
b716bd1
shortened desc
nkkko Aug 21, 2024
a85a049
fixed boolean operator
nkkko Aug 21, 2024
3179701
fixed logic
nkkko Aug 21, 2024
2855681
fixed nos
nkkko Aug 21, 2024
5be4715
fix
nkkko Aug 21, 2024
298eae2
added vaunt section
nkkko Aug 21, 2024
b696309
removed bank payment
nkkko Aug 21, 2024
7c2d683
search intent added
nkkko Aug 22, 2024
b2c61a9
updates to templates
nkkko Aug 22, 2024
b389177
note
nkkko Aug 22, 2024
85c4eaa
naming pr
nkkko Aug 22, 2024
7043f0f
added ghostwriting
nkkko Aug 22, 2024
eaeafb6
daytona mention
nkkko Aug 22, 2024
bcc9ec5
video demo
nkkko Aug 22, 2024
f4d08f5
readme splitted into 3 files
nkkko Aug 22, 2024
ccbc93b
link the pr
nkkko Aug 23, 2024
dcf442a
vaunt
nkkko Aug 23, 2024
9b71a4d
linked
nkkko Aug 23, 2024
88bdada
Updated award names
nkkko Aug 23, 2024
c86ae04
fix links
nkkko Aug 26, 2024
8369a4a
added example
nkkko Aug 26, 2024
07e0a11
rm line length
nkkko Sep 1, 2024
94a213d
linting is a must
nkkko Sep 1, 2024
c0ca0f9
add devcontainer feature guide
varshith257 Aug 19, 2024
181f043
add interlinking and grammarly changes
varshith257 Aug 19, 2024
d153d40
fixed merge conflict
JohnnieJnr Dec 5, 2024
15b35ba
add review comments
varshith257 Aug 19, 2024
b08f61b
rename filename
varshith257 Aug 19, 2024
e7434c1
add review comments
varshith257 Aug 24, 2024
a753a69
feat: add a basic test to validate devconatainer feature
varshith257 Aug 31, 2024
938a526
revert: README.md
varshith257 Aug 31, 2024
9a79d00
cleanup: remove unneceesary sections
varshith257 Aug 31, 2024
1783c43
fixed merge conflict
JohnnieJnr Dec 5, 2024
8866fb1
update
JohnnieJnr Dec 5, 2024
4ca5f1b
Daytona Office Hours #9
amrdb Aug 25, 2024
62c8234
Lint
amrdb Aug 25, 2024
23e1a1a
add TL;DR
amrdb Aug 25, 2024
e05ebd9
Article improvements
amrdb Sep 2, 2024
1288332
restore deleted files
amrdb Sep 2, 2024
81d7d63
Daytona Office Hours 8
harshbisle Aug 31, 2024
8e6a31f
re-wrote the entire article
harshbisle Sep 4, 2024
89086f5
refined and improved conclusion
harshbisle Sep 5, 2024
c6e8c0c
article polish and revamp outline
harshbisle Sep 7, 2024
edaa58d
lint
harshbisle Sep 7, 2024
9ab91cf
Daytona Office Hours 7
harshbisle Sep 10, 2024
b1f3ec5
proofread
harshbisle Sep 10, 2024
c5310fc
follow heading style guide
harshbisle Sep 10, 2024
c9c796e
follow heading style guide
harshbisle Sep 10, 2024
d495e59
update
harshbisle Sep 10, 2024
23fd87e
minor update
harshbisle Sep 11, 2024
d631490
Added reviewing file.
mojafa Nov 11, 2024
73b1800
Modified reviewing file. Signed-off-by: Mohamed Jaafar <jmohsa@gmail.…
mojafa Nov 11, 2024
4a4c443
Modified reviewing file. Signed-off-by: mojafa <[email protected]>
mojafa Nov 11, 2024
159ad80
Modified reviewing file. Signed-off-by: mojafa <[email protected]>
mojafa Nov 11, 2024
1558789
Added Fly-Provider Docs
scshiv29-dev Nov 7, 2024
f1b4893
Updated article
scshiv29-dev Nov 11, 2024
afc0a88
fixed typos and removed commands not working
scshiv29-dev Nov 11, 2024
b1c5d35
removed -t flag
scshiv29-dev Nov 12, 2024
fdb3a44
new article
oreoluwa212 Sep 12, 2024
856b9d6
update: screenshots for project-config added
oreoluwa212 Sep 12, 2024
817b5f6
feat: daytona container-registry feature explained
oreoluwa212 Sep 14, 2024
9315991
fix
oreoluwa212 Sep 14, 2024
d1e7e75
fix
oreoluwa212 Sep 14, 2024
ff2e223
fix
oreoluwa212 Sep 14, 2024
900f6c2
fix
oreoluwa212 Sep 15, 2024
6fb601b
docs: initial commit
c0d33ngr Aug 23, 2024
642fc06
Update 20240823_guide_template.md
c0d33ngr Aug 23, 2024
dc98263
Update 20240823_guide_template.md
c0d33ngr Aug 23, 2024
97fd2f3
Update 20240823_guide_template.md
c0d33ngr Aug 24, 2024
fdf5c76
Update and rename 20240823_guide_template.md to 20240823_how_to_setup…
c0d33ngr Aug 24, 2024
63058bd
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
9ba46b1
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
c13f3a5
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
ed7a481
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
7ed4b8e
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
31e4882
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
18e7098
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
2d844de
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
b2b5020
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
c229edd
Create hello.txt
c0d33ngr Aug 24, 2024
6bf5e46
Delete guides/assets/hello.txt
c0d33ngr Aug 24, 2024
4ef8cc9
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
309b4fc
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
aa44e33
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
043b92b
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
a721851
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
234c5fa
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
6a8e3d3
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
7a5e533
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
2cc1e69
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
5f2655d
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
e526f49
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
ad0ac5e
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
8d5d3b4
Update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Aug 24, 2024
4a7af56
Create jeffrey_whewhetu.md
c0d33ngr Aug 24, 2024
010f450
docs: remove lower level lists Signed-off-by: Jeffrey <jeffwhewhetu@…
c0d33ngr Sep 13, 2024
16c6b69
docs: update guide to include some definitions
c0d33ngr Sep 13, 2024
416e4a4
docs: ceate 20240823_definitions_postgresql.md for postgresql
c0d33ngr Sep 13, 2024
7a48b47
docs: update 20240823_how_to_setup_postgresql_playground_in_daytona.md
c0d33ngr Sep 13, 2024
e3e0569
docs: update jeffrey_whewhetu.md
c0d33ngr Sep 13, 2024
80cfd28
docs: add social handles properly
c0d33ngr Sep 14, 2024
850893d
docs: remove definition comment
c0d33ngr Sep 14, 2024
3b39bb5
docs: update postgresql guide
c0d33ngr Sep 17, 2024
df9b063
docs: update postgresql guide
c0d33ngr Sep 17, 2024
60bacd9
update guide
c0d33ngr Sep 24, 2024
662a9ff
update images in the guide
c0d33ngr Sep 24, 2024
d517dcf
remove some grammatical errors
c0d33ngr Sep 24, 2024
b70a055
correct grammatical errors
c0d33ngr Sep 24, 2024
1ede9dc
update guide using grammarly
c0d33ngr Sep 26, 2024
d6ab4fd
doc: fix broken link
c0d33ngr Nov 14, 2024
8c52c12
added content and assets
Kiran1689 Nov 13, 2024
4328477
added definitions
Kiran1689 Nov 13, 2024
90da3ec
added author details
Kiran1689 Nov 13, 2024
2c77a6f
added content and assets
Kiran1689 Nov 14, 2024
35143d4
added definitions
Kiran1689 Nov 14, 2024
17bae8a
added author details
Kiran1689 Nov 14, 2024
2308c3f
move to article
Kiran1689 Nov 17, 2024
b93f591
update content
Kiran1689 Nov 17, 2024
ab3fa4d
remove author details
Kiran1689 Nov 17, 2024
2fdfc0e
added author assets
Kiran1689 Nov 17, 2024
1da567c
initial commit
stdthoth Aug 28, 2024
1f21f31
update 20240827_setup_mongodb_daytona_playground
stdthoth Aug 28, 2024
44cca91
Update 20240827_setup_mongodb_daytona_playground.md
stdthoth Aug 29, 2024
1164dc0
Update 20240827_setup_mongodb_daytona_playground.md
stdthoth Aug 29, 2024
6da192f
added to common issues and troubleshooting
stdthoth Nov 21, 2024
15d570c
docs(1): thoughless oss always dies
hunxjunedo Aug 20, 2024
d92a6da
apply suggested changes
hunxjunedo Aug 23, 2024
5498836
apply the requested changes
hunxjunedo Sep 3, 2024
4eecf5a
enhance author description
hunxjunedo Sep 3, 2024
6a3353c
Added first draft of article
bellatrick Sep 10, 2024
cc86d52
refined md file structure
bellatrick Sep 10, 2024
e26bf66
edited grammar and added image illustration
bellatrick Sep 11, 2024
5112803
checked grammar mistakes, linting issues and added a section for best…
bellatrick Sep 11, 2024
5bc8b0e
removed --code flag from daytona create command
bellatrick Nov 13, 2024
a37f920
Daytona Office Hours 7
harshbisle Sep 10, 2024
9c1f7f0
proofread
harshbisle Sep 10, 2024
30c7de0
follow heading style guide
harshbisle Sep 10, 2024
5bbab86
follow heading style guide
harshbisle Sep 10, 2024
b403ed3
update
harshbisle Sep 10, 2024
48aac19
minor update
harshbisle Sep 11, 2024
f4ea13d
Modified reviewing file. Signed-off-by: mojafa <[email protected]>
mojafa Nov 11, 2024
0885672
Modified reviewing file. Signed-off-by: mojafa <[email protected]>
mojafa Nov 11, 2024
1ae8e49
Added Fly-Provider Docs
scshiv29-dev Nov 7, 2024
3a45414
Updated article
scshiv29-dev Nov 11, 2024
0120600
fixed typos and removed commands not working
scshiv29-dev Nov 11, 2024
e00c9bb
removed -t flag
scshiv29-dev Nov 12, 2024
700d596
Revert "Merge remote-tracking branch 'upstream/main'"
bellatrick Nov 13, 2024
9f6ef4d
moved content to the articles folder
bellatrick Nov 20, 2024
590348e
added article on dev inside containers
JohnnieJnr Aug 19, 2024
d8395cb
added author info
JohnnieJnr Aug 19, 2024
f96018f
rewrote the article taking into the consideration the neccessary corr…
JohnnieJnr Aug 20, 2024
066dd3a
included tldr and relevant links to sitemap
JohnnieJnr Aug 20, 2024
944d8e4
grammar check, reduced verbosity
JohnnieJnr Aug 29, 2024
5fa9e95
added company logo
JohnnieJnr Aug 29, 2024
9190d1a
updated and tested code snippets
JohnnieJnr Sep 6, 2024
c5fbd5f
fixed lint issues
JohnnieJnr Sep 6, 2024
82e6d39
fixed merge conflict
JohnnieJnr Sep 6, 2024
eb4ab42
update
JohnnieJnr Sep 6, 2024
ac3c0b1
update
JohnnieJnr Sep 6, 2024
f9b556d
fixed merge conflict
JohnnieJnr Sep 10, 2024
8d09e30
Introducing Daytona Project Config: Simplify and Streamline Workspace…
divanshu-go Sep 10, 2024
d2c4ffc
refactor , resolve , do lint
divanshu-go Nov 17, 2024
9a70893
refactor , resolve , do lint
divanshu-go Nov 17, 2024
6c5da55
refactor , resolve , do lint
divanshu-go Nov 17, 2024
f0ca3ce
add images and fix broken link in refrence
divanshu-go Nov 21, 2024
33fed09
improve quality of article
divanshu-go Nov 22, 2024
e3be2b4
Improve quality of article and fix lint
divanshu-go Nov 27, 2024
f465afb
fixed linting issues and changes some rules
mojafa Dec 3, 2024
99d2f9b
removed some deprecated dependencies
mojafa Dec 3, 2024
196b709
removed some deprecated dependencies
mojafa Dec 3, 2024
97d9cbc
update
JohnnieJnr Dec 5, 2024
6d92674
update
JohnnieJnr Dec 8, 2024
e0cedfa
Merge branch 'Real-World-Applications-of-Containerized-Development' o…
JohnnieJnr Dec 8, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,4 +100,4 @@ Simply add the following code to your GitHub profile README file:
```

Happy writing, and thank you for contributing to the Daytona Dotfiles Insider
blog!
blog!
150 changes: 150 additions & 0 deletions articles/20240910_Real_World-App-of-Containerized-dep.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,150 @@
---
title: "Case Studies in Containerized Development Success"
description: "Learn how Spotify, Monzo, Adobe, Netflix, and Airbnb overcame challenges and gained efficiency with containerized development."
author: Johnnie Oduro Jnr.
date: 2024-09-10
tags: ["Containerization", "Microservices", "DevOps", "CI/CD", "Legacy Applications", "Development Environments"]
---


# Real-World Applications of Containerized Development: Case Studies and Lessons Learned

**TL;DR**: Explore how Spotify, Shopify, GitHub, Netflix, and Slack leverage containerized development. From onboarding workflows to addressing scaling challenges, discover insights and real-world fixes to common containerization problems.

---

## Introduction

Containerized development has reshaped the way companies build, test, and deploy software. These lightweight, isolated environments have solved issues like dependency conflicts and environmental drift while fostering innovation and scalability. However, the journey to effective containerization isn’t without hurdles. By examining how industry leaders like Spotify, Shopify, GitHub, Netflix, and Slack have implemented and refined their workflows, we can uncover valuable lessons for teams considering a similar path.

This article blends practical case studies with insights into team workflows, onboarding strategies, and how challenges were overcome, alongside ideas for implementing these strategies in your organization.

---

## Spotify: Innovating Audio Streaming with Containers

### Challenges Faced:
Spotify’s shift to microservices highlighted inconsistencies across developer environments, dependency management issues, and scaling challenges.

### Fixes:
Spotify introduced Docker for environment isolation, ensuring development and production matched exactly. Kubernetes became the backbone of their orchestration, automating scaling and managing service dependencies.

### Workflows and Onboarding:
- Spotify implemented pre-configured Docker images, allowing developers to quickly replicate the production environment.
- Onboarding was streamlined through these images, reducing setup time for new developers to hours instead of days.

---

## Shopify: Scaling eCommerce Without Disruption

### Challenges Faced:
Frequent updates in Shopify’s vast eCommerce ecosystem posed a risk of dependency conflicts and service downtime.

### Fixes:
Shopify containerized its application stack, ensuring all dependencies were encapsulated in immutable Docker images. Robust version pinning in Dockerfiles prevented unexpected updates.

### Workflows and Onboarding:
- CI/CD pipelines leveraged containers for testing and deployment, ensuring updates were safe and reliable.
- New hires accessed development environments with a single command, gaining a fully functional setup on their first day.

---

## GitHub: Enabling Developer Collaboration at Scale

### Challenges Faced:
Managing millions of repositories while maintaining security compliance and avoiding environmental drift.

### Fixes:
GitHub adopted containers to standardize its environments across development, testing, and production. Vulnerability scanning tools like Clair were integrated into their pipelines to ensure base images were secure.

### Workflows and Onboarding:
- Developers used containerized templates for building features, ensuring consistency and reducing onboarding times.
- GitHub implemented interactive tutorials for new developers, using containers to replicate real-world scenarios.

---

## Netflix: Delivering Entertainment at Global Scale

### Challenges Faced:
Scaling its global streaming platform required modular updates without disrupting services, a daunting task with their previous monolithic architecture.

### Fixes:
Netflix adopted Docker and developed Titus, a custom container orchestration tool. This enabled dynamic scaling and modular updates while optimizing infrastructure costs.

### Workflows and Onboarding:
- Developers used containers to simulate production conditions locally, allowing thorough testing.
- Onboarding included hands-on training with Titus to help engineers understand Netflix’s unique orchestration system.

---

## Slack: Enhancing Collaboration Through Containers

### Challenges Faced:
Slack needed a solution to avoid dependency conflicts that often delayed development and caused regressions in production.

### Fixes:
Slack’s backend services were containerized, ensuring consistent dependencies across all environments. They automated testing and deployment pipelines to reduce human error and improve efficiency.

### Workflows and Onboarding:
- Developers worked in isolated containers for each feature, enabling independent development without affecting others.
- Onboarding was simplified through pre-configured development containers, including documentation and example configurations.

<img src='articles/assets/slack.png'/>

---

## Key Takeaways: Challenges, Fixes, and Innovations

### Challenges:
1. **Dependency Conflicts**:
Teams often faced mismatches across environments. For example, Spotify encountered conflicts between local libraries and production systems.

**Fix**: Dependency version pinning and immutable Docker images solved this for many organizations.

<img src='articles/assets/containers-vs-virtual-machines-vm.jpg'>

2. **Scaling Complex Architectures**:
Netflix’s scaling issues underscored the need for reliable orchestration tools.

**Fix**: Tools like Kubernetes and custom solutions (e.g., Titus) automated scaling and load balancing.

<img src='articles/assets/orchestration.png'>

3. **Security Vulnerabilities**:
Containers inherit vulnerabilities from their base images, creating risks for production environments. GitHub faced this issue at scale.

**Fix**: Integrated vulnerability scanning tools like Clair were essential for safe deployments.

<img src='articles/assets/container-security scan.png'>


---

### Innovations:
1. **Fail-Fast Workflows**:
Containers made it easier for teams to experiment without disrupting ongoing projects. Netflix, for instance, used isolated containers to test features.

<img src='articles/assets/fail-fast-fail-safe.avif'>

2. **Unified Development**:
GitHub’s container strategy bridged local and production environments, eliminating environment-specific bugs.

<img src='articles/assets/CICD-Process-1024x385.png'>

3. **Streamlined Onboarding**:
Pre-configured containers reduced onboarding time for companies like Shopify and Slack, allowing new developers to focus on coding from day one.

---

By blending these lessons with practical takeaways, companies can better understand how to harness the power of containerization while avoiding common pitfalls. Whether you're looking to streamline development workflows or scale your infrastructure, the insights shared here offer a roadmap for success.


## References:

- [Microservices at Spotify](https://www.infoq.com/news/2015/12/microservices-spotify/)
- [How we build containerized services at GitHub using GitHub](https://github.blog/engineering/architecture-optimization/how-we-build-containerized-services-at-github-using-github/)
- [Docker at Shopify](https://shopify.engineering/docker-at-shopify-how-we-built-containers-that-power-over-100-000-online-shops)
- [The Evolution of Container Usage at Netflix](https://netflixtechblog.com/the-evolution-of-container-usage-at-netflix-3abfc096781b)
- [Unleashing the Power of Kubernetes: A Comprehensive Case Study of Spotify's Transformation Journey](https://www.linkedin.com/pulse/unleashing-power-kubernetes-comprehensive-case-study-spotifys-)
- [Leveraging Docker: Netflix’s Secret Sauce for Seamless Streaming](https://medium.com/@sewanianuj0/leveraging-docker-netflixs-secret-sauce-for-seamless-streaming-4a9683008233)
- [The Journey to Cloud Development](https://shopify.engineering/shopifys-cloud-development-journey)
154 changes: 154 additions & 0 deletions articles/20240919_dotfiles_in_daytona.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
---
title: "How to Bring Your Dotfiles with You in Daytona"
description: "Learn how to easily integrate your dotfiles into Daytona’s containerized environments using tools like Chezmoi and Daytona's built-in dotfile support."
author: "Johnnie Oduro Jnr"
date: "2024-09-19"
tags: ["dotfiles", "Daytona", "containerized development", "developer productivity"]
---



# TL;DR

Dotfiles help developers keep their environment settings consistent. This guide explains how to integrate your dotfiles into Daytona containers using tools like Chezmoi or Daytona’s native support for dotfile repositories.

---

## How to Bring Your Dotfiles with You in Daytona

### Introduction to Dotfiles and Their Importance

Dotfiles are hidden files that store configuration settings for your system, such as shell setups, editor preferences, and other environment customizations. These files are essential for developers who want a consistent experience, no matter where they’re working. By keeping your dotfiles with you, your workflows remain personalized, efficient, and familiar.

### What is Daytona?

Daytona is a development platform that provides isolated, consistent environments using containers. With Daytona, you don’t have to worry about differences between your local machine and the project’s environment—everything runs the same, no matter the host. However, bringing your dotfiles into these containers is key to ensuring that your personal settings are preserved.

### Challenges with Dotfiles in Containerized Development

The challenge with containerized environments is that they’re typically clean every time you start them. Without your dotfiles, you lose the custom setups that make your workflow smooth. Reapplying them manually every time can be frustrating, so automating the process is important for efficiency.

---

### Typical Project Structure with Dotfiles Integration

Here’s how a project using dotfiles in Daytona might look:

```
my-project/
├── .daytona.yml
├── Dockerfile
├── src/
└── README.md
```

- **`.daytona.yml`**: Configuration file specifying your dotfiles repository.
- **`Dockerfile`**: Defines the containerized environment for your application.
- **`src/`**: Contains your project source code.

---

### Bringing Your Dotfiles to Daytona

To avoid repetitive setup, Daytona supports dotfile integration. You can also use tools like [Chezmoi](https://github.com/rio/features/tree/main/src/chezmoi) to automate the process. Here’s how you can bring your dotfiles into a Daytona container.

### Step-by-Step Guide

1. **Set Up Your Dotfiles Repository**
First, make sure your dotfiles are version-controlled. You can store them in a Git repository to easily share and manage them across different machines or containers. Here’s an example:

```bash
git init --bare $HOME/.dotfiles
alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
config config --local status.showUntrackedFiles no
```

2. **Integrate Dotfiles with Daytona**
Daytona has built-in support for dotfiles. You can use a `.daytona.yml` file to ensure your dotfiles are automatically included in any container you start. Here’s an example:

- Create a `.daytona.yml` in your project directory:
```yaml
dotfiles:
repo: "https://github.com/your-username/dotfiles"
destination: "/home/devuser"
```
- Once this file is in place, your dotfiles will be applied whenever the container starts, so you won’t have to set them up manually.

3. **Using Chezmoi to Manage Dotfiles**
[Chezmoi](https://github.com/rio/features/tree/main/src/chezmoi) is another tool that helps manage dotfiles efficiently across environments. It can be used with Daytona to ensure your dotfiles are set up correctly in the container.

- Inside your Daytona container, initialize Chezmoi with your dotfiles repository:
```bash
chezmoi init https://github.com/your-username/dotfiles
chezmoi apply
```

This allows you to maintain multiple dotfiles setups, applying them to various environments when needed.

---

### Troubleshooting Common Issues

1. **Dotfiles Not Loading in the Container**
- **Cause**: The `.daytona.yml` file might be misconfigured.
- **Solution**: Double-check the `repo` URL and `destination` path in the file. Test by manually cloning your dotfiles into the container.

```bash
git clone https://github.com/your-username/dotfiles ~/dotfiles-test
```

2. **Chezmoi Command Not Found**
- **Cause**: Chezmoi is not installed in the container.
- **Solution**: Install it by adding this to your Dockerfile or installing manually:

```bash
RUN sh -c "$(curl -fsLS chezmoi.io/get)" -- -b /usr/local/bin
```

3. **Conflicting Dotfiles Already Present**
- **Cause**: The container may already have default configuration files.
- **Solution**: Use Chezmoi’s `diff` command to preview changes before applying:

```bash
chezmoi diff
```

4. **Incorrect Permissions on Dotfiles**
- **Cause**: File ownership or permissions are incorrect.
- **Solution**: Use `chown` and `chmod` to adjust permissions in the container.

```bash
chown devuser:devuser ~/.bashrc
chmod 644 ~/.bashrc
```

5. **Environment Variables Not Applied**
- **Cause**: Some dotfiles rely on environment variables.
- **Solution**: Verify that the necessary environment variables are set in the `.daytona.yml` file or the container’s runtime configuration.

---

### Example `.daytona.yml` Configuration
```yaml
dotfiles:
repo: "https://github.com/your-username/dotfiles"
destination: "/home/devuser"
env:
- EDITOR=vim
- PATH=/home/devuser/bin:$PATH
```

This configuration ensures that your dotfiles are applied and key environment variables are loaded.

---

### Conclusion

Bringing your dotfiles into Daytona ensures your personalized environment stays consistent, even in a container. Whether you use Daytona’s native support or a tool like Chezmoi, these simple steps will save you time and keep your development experience smooth and efficient. By automating this process, you can focus on coding rather than repeatedly configuring your setup.

---

### References
- [Chezmoi GitHub Repository](https://github.com/rio/features/tree/main/src/chezmoi)
- [Ultimate Guide to Dotfiles with Daytona](https://www.daytona.io/dotfiles/ultimate-guide-to-dotfiles)

2 changes: 1 addition & 1 deletion articles/YYYYMMDD_article_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,4 @@ reader.]_
<!-- Note on Definitions -->
<!-- Throughout this article, link relevant terms to their definitions using inline Markdown links. -->
<!-- Format: [term](/definitions/term.md) -->
<!-- If a definition doesn't exist, create it in the definitions directory and link to it. -->
<!-- If a definition doesn't exist, create it in the definitions directory and link to it. -->
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed articles/assets/20241105_Fly.io_provider_1.1.png
Diff not rendered.
Binary file removed articles/assets/20241105_Fly.io_provider_1.png
Diff not rendered.
Binary file removed articles/assets/20241105_Fly.io_provider_2.png
Diff not rendered.
Binary file removed articles/assets/20241105_Fly.io_provider_3.1.png
Diff not rendered.
Binary file removed articles/assets/20241105_Fly.io_provider_3.png
Diff not rendered.
Binary file removed articles/assets/20241105_Fly.io_provider_4.png
Diff not rendered.
Binary file removed articles/assets/20241105_Fly.io_provider_5.png
Diff not rendered.
Binary file added articles/assets/CICD-Process-1024x385.png
Binary file added articles/assets/container-security scan.png
Binary file added articles/assets/fail-fast-fail-safe.avif
Binary file not shown.
Binary file added articles/assets/orchestration.png
Binary file added articles/assets/slack.png
Binary file removed authors/assets/shivam-chaudhary-logo.png
Diff not rendered.
Binary file removed authors/assets/shivam-chaudhary.jpg
Diff not rendered.
2 changes: 1 addition & 1 deletion authors/oreoluwa-ajayi.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,4 @@ Description: [Swarmauri is all about power your AI by providing open-source
tools to build, test, and deploy Artificial Intelligence] Company Logo Dark:
[URL or path to your company logo in .png format, min width 512px for dark
background] Company Logo White:
![company-logo](../authors/assets/oreoluwa-ajayi-logo.PNG)
![company-logo](../authors/assets/oreoluwa-ajayi-logo.PNG)
2 changes: 1 addition & 1 deletion authors/shivam_chaudhary.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ S3-compatible buckets. Armed with certifications from Microsoft Azure and a deep
understanding of the MERN stack, Shivam continues to push the boundaries of
cloud-native development and automation. Company Name: Accenture Solutions Pvt
Ltd. Author Image: authors/assets/shivam-chaudhary.jpg Company Logo:
authors/assets/shivam-chaudhary-logo.png
authors/assets/shivam-chaudhary-logo.png
2 changes: 1 addition & 1 deletion definitions/20240820_definition_shell_scripting.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,4 @@ In Daytona, shell scripting is used for automating setup and configuration tasks
within Devcontainers. For example, an `install.sh` script might be used to
install dependencies, configure environments, or set up necessary tools when a
container is initialized. This automation ensures consistency and efficiency
across development environments.
across development environments.
2 changes: 1 addition & 1 deletion definitions/20240820_defintion_python.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,4 @@ making it a go-to language for both beginners and experienced developers.

In a Devcontainer, Python is frequently used to install packages, manage
environments, and automate setup processes, making it an essential part of the
development workflow.
development workflow.
4 changes: 4 additions & 0 deletions definitions/20240824_definition_osslicense.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,14 @@ description:

## Definition

<<<<<<< HEAD
Open-source licenses are software licenses that allow content to be used, modified, and shared. They facilitate free and open-source software (FOSS) development. Intellectual property (IP) laws generally restrict the modification and sharing of creative works, but free and open-source licenses leverage these legal structures for an inverse purpose. They grant the recipient the rights to use the software, examine the source code, modify it, and distribute those modifications..
=======
Open-source licenses are software licenses that allow content to be used,
modified, and shared. They facilitate free and open-source software (FOSS)
development. Intellectual property (IP) laws generally restrict the modification
and sharing of creative works, but free and open-source licenses leverage these
legal structures for an inverse purpose. They grant the recipient the rights to
use the software, examine the source code, modify it, and distribute those
modifications..
>>>>>>> 3b409bd (fixed linting issues and changes some rules)
4 changes: 4 additions & 0 deletions definitions/20240904_definition_aws.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@ deploy, and manage applications in the cloud.

## Context and Usage

<<<<<<< HEAD
AWS is widely used for hosting applications, storing data, and processing large-scale workloads. It's applicable in various industries, from startups to enterprises, and supports use cases such as web hosting, data analytics, and artificial intelligence. AWS offers scalability, flexibility, and cost-efficiency, making it a popular choice for cloud computing needs.
=======
AWS is widely used for hosting applications, storing data, and processing
large-scale workloads. It's applicable in various industries, from startups to
enterprises, and supports use cases such as web hosting, data analytics, and
artificial intelligence. AWS offers scalability, flexibility, and
cost-efficiency, making it a popular choice for cloud computing needs.
>>>>>>> 3b409bd (fixed linting issues and changes some rules)
4 changes: 4 additions & 0 deletions definitions/20240904_definition_aws_iam.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,12 @@ providing fine-grained access control across all AWS services.

## Context and Usage

<<<<<<< HEAD
AWS IAM is crucial for maintaining security and governance in AWS environments. It is used to create and manage AWS users and groups, assign permissions, and enforce policies to protect resources. IAM is commonly used in both development and production environments to ensure that only authorized users have access to specific AWS resources.
=======
AWS IAM is crucial for maintaining security and governance in AWS environments.
It is used to create and manage AWS users and groups, assign permissions, and
enforce policies to protect resources. IAM is commonly used in both development
and production environments to ensure that only authorized users have access to
specific AWS resources.
>>>>>>> 3b409bd (fixed linting issues and changes some rules)
Loading
Loading