Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Such Great Heights, Code BEAM Lite, Amsterdam 2018
Search
Saša Jurić
November 30, 2018
Programming
0
180
Such Great Heights, Code BEAM Lite, Amsterdam 2018
Saša Jurić
November 30, 2018
Tweet
Share
More Decks by Saša Jurić
See All by Saša Jurić
Simplifying systems with Elixir - Belgrade
sasajuric
3
470
Simplifying systems with Elixir
sasajuric
2
580
Metagrokking Elixir
sasajuric
4
300
Solid Ground
sasajuric
15
1.2k
Solid Ground
sasajuric
3
890
Elixir - valentine edition
sasajuric
0
140
What's the fuss about Phoenix?
sasajuric
2
1.1k
Phoenix
sasajuric
1
240
Phoenix
sasajuric
0
120
Other Decks in Programming
See All in Programming
Implementation Patterns
denyspoltorak
0
140
これならできる!個人開発のすゝめ
tinykitten
PRO
0
140
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
600
Go コードベースの構成と AI コンテキスト定義
andpad
0
150
Kotlin Multiplatform Meetup - Compose Multiplatform 외부 의존성 아키텍처 설계부터 운영까지
wisemuji
0
160
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
230
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
gunshi
kazupon
1
140
.NET Conf 2025 の興味のあるセッ ションを復習した / dotnet conf 2025 quick recap for backend engineer
tomohisa
0
110
AtCoder Conference 2025
shindannin
0
910
メルカリのリーダビリティチームが取り組む、AI時代のスケーラブルな品質文化
cloverrose
2
450
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
4.5k
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
97
6.5k
Making Projects Easy
brettharned
120
6.5k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Designing Experiences People Love
moore
143
24k
Navigating Team Friction
lara
191
16k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
37
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Abbi's Birthday
coloredviolet
0
4.2k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Accessibility Awareness
sabderemane
0
33
Chasing Engaging Ingredients in Design
codingconduct
0
95
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
360
Transcript
Such great heights @sasajuric aircloak.com
None
sensitive data Aircloak analyst query non sensitive result
aircloak air cloak central common integration_test ...
dev flow pull request based mandatory code review mandatory tests
outgrowing Travis CI long build times flakiness low throughput
solution self-hosting
custom CI simpler for a small problem flexible no additional
knowledge required
aircloak air cloak central common integration_test ci ...
None
GitHub poller GitHub poll list of branches and PRs
aircloak_ci GitHub poller builds branch x pull request y
pull request x air cloak …
changed component tested components air air integration_test ci ci common
everything
report success build components await approval report mergeability
if not merge_conflict?(build_state) and tests_passed?(build_state) and pr_approved?(build_state) do: report_mergeable(build_state)
Github.comment_on_issue( build_state, "Pull request can be merged #{AircloakCI.Emoji.happy()}" ) Github.put_status_check_state(
build_state, "continuous-integration/aircloak/mergeable", "pull request can be merged", :success )
None
%{ compile: [ "mix deps.get", "mix compile" ], test: [
"mix test", "mix dialyze", "mix format --check-formatted" ] }
test_test = # ... test_dev = # ... test_prod =
# ... %{ compile: # ..., test: [test_test, test_dev, test_prod] }
# sequence of commands [ "mix deps.get", "mix compile" ]
# also a sequence {:sequence, [ "mix deps.get", "mix compile"
]}
# independent commands {:parallel, [ "mix format --check-formatted", "mix test",
"mix dialyze", ]}
{:sequence, [ "command a", {:parallel, [ "command b", {:sequence, [
"command c", "command d" ]}, "command e" ]}, "command f" ]}
command a command b command c command e command d
command f
component command 1 command 2 …
build component 1 component 2 …
builds build 1 build 2 …
not open-source (yet!)
None
uniformity simpler development simpler testing simpler deployment simpler maintenance improved
collaboration
technical feature built-in options services GenServer, Task service manager Supervisor
service registry Registry k-v ETS, Mnesia web server Phoenix, Plug, Cowboy periodical jobs :timer, Quantum, Periodic load regulation Jobs, Safetyvalve, Sbroker concurrent flows Flow, GenStage
distributed systems persistence partial deployment
They will see us waving from such great heights Come
down now, they'll say But everything looks perfect from far away Come down now, but we'll stay The Postal Service
40% off at manning.com with code ctwcodebeamamsterdam18 links: bit.ly/such-great-heights-amsterdam2018