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
840
Elixir - valentine edition
sasajuric
0
120
What's the fuss about Phoenix?
sasajuric
2
1k
Phoenix
sasajuric
1
210
Phoenix
sasajuric
0
110
Other Decks in Programming
See All in Programming
【re:Growth 2024】 Aurora DSQL をちゃんと話します!
maroon1st
0
770
Go の GC の不得意な部分を克服したい
taiyow
2
770
良いユニットテストを書こう
mototakatsu
5
1.9k
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
110
今からはじめるAndroidアプリ開発 2024 / DevFest 2024
star_zero
0
1k
Scalaから始めるOpenFeature入門 / Scalaわいわい勉強会 #4
arthur1
1
300
KubeCon + CloudNativeCon NA 2024 Overviewat Kubernetes Meetup Tokyo #68 / amsy810_k8sjp68
masayaaoyama
0
250
htmxって知っていますか?次世代のHTML
hiro_ghap1
0
330
生成AIでGitHubソースコード取得して仕様書を作成
shukob
0
270
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
290
MCP with Cloudflare Workers
yusukebe
2
220
range over funcの使い道と非同期N+1リゾルバーの夢 / about a range over func
mackee
0
110
Featured
See All Featured
Embracing the Ebb and Flow
colly
84
4.5k
Fashionably flexible responsive web design (full day workshop)
malarkey
405
66k
Faster Mobile Websites
deanohume
305
30k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
17
2.3k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Documentation Writing (for coders)
carmenintech
66
4.5k
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