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
Domain Modeling, Elevated
Search
Zach Daniel
February 09, 2024
Technology
1
230
Domain Modeling, Elevated
Zach Daniel
February 09, 2024
Tweet
Share
More Decks by Zach Daniel
See All by Zach Daniel
Introduction to the Ash Framework Elixir Conf 2020
zachsdaniel1
1
720
Other Decks in Technology
See All in Technology
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
0
110
飲食店データの分析事例とそれを支えるデータ基盤
kimujun
0
190
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.9k
アジャイルチームがらしさを発揮するための目標づくり / Making the goal and enabling the team
kakehashi
3
150
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
120
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
330
日経電子版のStoreKit2フルリニューアル
shimastripe
1
150
リンクアンドモチベーション ソフトウェアエンジニア向け紹介資料 / Introduction to Link and Motivation for Software Engineers
lmi
4
300k
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
Why App Signing Matters for Your Android Apps - Android Bangkok Conference 2024
akexorcist
0
130
ノーコードデータ分析ツールで体験する時系列データ分析超入門
negi111111
0
430
アプリエンジニアのためのGraphQL入門.pdf
spycwolf
0
100
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Typedesign – Prime Four
hannesfritz
40
2.4k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Ruby is Unlike a Banana
tanoku
97
11k
VelocityConf: Rendering Performance Case Studies
addyosmani
325
24k
How GitHub (no longer) Works
holman
310
140k
The Language of Interfaces
destraynor
154
24k
Building an army of robots
kneath
302
43k
Unsuck your backbone
ammeep
668
57k
Transcript
Zach Daniel | May 19 2023 Domain Modeling, Elevated
Outline • What is domain modeling? • Spark • What
is a resource? • Advanced features • Extensibility • What’s new? • What’s coming up?
Domain Modeling
Domain Modeling
Domain Modeling You’re doing it, even if you don’t realize
it
• Interfaces Domain Modeling You’re doing it, even if you
don’t realize it
• Interfaces • Data Domain Modeling You’re doing it, even
if you don’t realize it
• Interfaces • Data • Side e ff ects Domain
Modeling You’re doing it, even if you don’t realize it
• Interfaces • Data • Side e ff ects •
The intersection of business and technology Domain Modeling You’re doing it, even if you don’t realize it
• Interfaces • Data • Side e ff ects •
The intersection of business and technology Domain Modeling You’re doing it, even if you don’t realize it
• Interfaces • Data • Side e ff ects •
The intersection of business and technology • There is no “one size fi ts all” Domain Modeling You’re doing it, even if you don’t realize it
• Interfaces • Data • Side e ff ects •
The intersection of business and technology • There is no “one size fi ts all” Domain Modeling You’re doing it, even if you don’t realize it
Spark DSL Builder
Spark DSL Builder • Powers all Ash DSLs
Spark DSL Builder • Powers all Ash DSLs • Sets
the core design patterns
Spark DSL Builder • Powers all Ash DSLs • Sets
the core design patterns • Con fi guration & Introspection
Spark DSL Builder • Powers all Ash DSLs • Sets
the core design patterns • Con fi guration & Introspection • Makes DSLs less magic
Spark DSL Builder • Powers all Ash DSLs • Sets
the core design patterns • Con fi guration & Introspection • Makes DSLs less magic
Spark DSL Builder • Powers all Ash DSLs • Sets
the core design patterns • Con fi guration & Introspection • Makes DSLs less magic • Supports extensions
Spark DSL Builder • Powers all Ash DSLs • Sets
the core design patterns • Con fi guration & Introspection • Makes DSLs less magic • Supports extensions • Used outside of Ash
Spark DSL Builder • Powers all Ash DSLs • Sets
the core design patterns • Con fi guration & Introspection • Makes DSLs less magic • Supports extensions • Used outside of Ash
Spark DSL Builder • Powers all Ash DSLs • Sets
the core design patterns • Con fi guration & Introspection • Makes DSLs less magic • Supports extensions • Used outside of Ash
Spark DSL Builder • Powers all Ash DSLs • Sets
the core design patterns • Con fi guration & Introspection • Makes DSLs less magic • Supports extensions • Used outside of Ash
What is a resource?
What is a resource?
What is a resource?
What is a resource?
What is a resource?
What is a resource?
What is a resource?
None
None
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work.
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks Ash.Resource.Change
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks Ash.Resource.Preparation
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks • Manual Implementations Ash.Resource.ManualCreate
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks • Manual Implementations Ash.Resource.ManualRelationship
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks • Manual Implementations • Calculations Elixir Calculations
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks • Manual Implementations • Calculations Expression Calculations
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks • Manual Implementations • Calculations • Aggregates Aggregating Related Data
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks • Manual Implementations • Calculations • Aggregates Lifting Related Data
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks • Manual Implementations • Calculations • Aggregates • Policies
Advanced Features The special sauce • Intelligent, integrated tools are
what make it all work. • Standardized Building Blocks • Manual Implementations • Calculations • Aggregates • Policies • Migration Generator
Extending Ash • Extensions can modify resources in arbitrary ways.
Extending Ash • Extensions can modify resources in arbitrary ways.
• Extensions often come along with con fi guration driven tools to leverage them
Extending Ash • Extensions can modify resources in arbitrary ways.
• Extensions often come along with con fi guration driven tools to leverage them • Extensions can fundamentally change the way you use the framework
Extending Ash • Extensions can modify resources in arbitrary ways.
• Extensions often come along with con fi guration driven tools to leverage them • Extensions can fundamentally change the way you use the framework
Extending Ash • Extensions can modify resources in arbitrary ways.
• Extensions often come along with con fi guration driven tools to leverage them • Extensions can fundamentally change the way you use the framework • The builtin extensions are just the beginning. They are all built with tools you can use too.
What’s new? • AshAuthentication
What’s new? • AshAuthentication • OpenAPI/Swagger Support
What’s new? • AshAuthentication • OpenAPI/Swagger Support
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType • Spark.Dsl.Fragment
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType • Spark.Dsl.Fragment • Streaming Read Actions
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType • Spark.Dsl.Fragment • Streaming Read Actions • Locking
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType • Spark.Dsl.Fragment • Streaming Read Actions • Locking • AshStateMachine & AshOban
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType • Spark.Dsl.Fragment • Streaming Read Actions • Locking • AshStateMachine & AshOban • Generic Actions
What’s new? • AshAuthentication • OpenAPI/Swagger Support • Ash.Type.Union &
Ash.Type.NewType • Spark.Dsl.Fragment • Streaming Read Actions • Locking • AshStateMachine & AshOban • Generic Actions • Bulk Creates
What’s coming up? This is just the beginning!
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics • Generators
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics • Generators • More extensions!
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics • Generators • More extensions! SQLite
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics • Generators • More extensions! MySQL SQLite
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics • Generators • More extensions! MySQL SQLite SQL Server
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics • Generators • More extensions! MySQL SQLite SQL Server CQRS
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics • Generators • More extensions! MySQL SQLite SQL Server CQRS GRPC
What’s coming up? This is just the beginning! • Constant
QoL and ergonomics improvements • Bulk Actions • Atomics • Generators • More extensions! MySQL SQLite SQL Server CQRS GRPC Multi Data Layer