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
160
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
440
Simplifying systems with Elixir
sasajuric
2
560
Metagrokking Elixir
sasajuric
4
280
Solid Ground
sasajuric
15
1.2k
Solid Ground
sasajuric
3
850
Elixir - valentine edition
sasajuric
0
120
What's the fuss about Phoenix?
sasajuric
2
1.1k
Phoenix
sasajuric
1
210
Phoenix
sasajuric
0
110
Other Decks in Programming
See All in Programming
Ruby on cygwin 2025-02
fd0
0
170
CloudNativePGを布教したい
nnaka2992
0
100
GAEログのコスト削減
mot_techtalk
0
120
Open source software: how to live long and go far
gaelvaroquaux
0
650
How mixi2 Uses TiDB for SNS Scalability and Performance
kanmo
40
16k
プログラミング言語学習のススメ / why-do-i-learn-programming-language
yashi8484
0
150
DRFを少しずつ オニオンアーキテクチャに寄せていく DjangoCongress JP 2025
nealle
2
210
CI改善もDatadogとともに
taumu
0
180
第3回 Snowflake 中部ユーザ会- dbt × Snowflake ハンズオン
hoto17296
4
380
第3回関東Kaggler会_AtCoderはKaggleの役に立つ
chettub
3
1.1k
クリーンアーキテクチャから見る依存の向きの大切さ
shimabox
4
900
GoとPHPのインターフェイスの違い
shimabox
2
200
Featured
See All Featured
RailsConf 2023
tenderlove
29
1k
Bash Introduction
62gerente
611
210k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
360
Fontdeck: Realign not Redesign
paulrobertlloyd
83
5.4k
Writing Fast Ruby
sferik
628
61k
How to Think Like a Performance Engineer
csswizardry
22
1.4k
How STYLIGHT went responsive
nonsquared
98
5.4k
How to train your dragon (web standard)
notwaldorf
91
5.9k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
The Cost Of JavaScript in 2023
addyosmani
47
7.3k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
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