Functional Web Development with Elixir, OTP, and Phoenix
Rethink the Modern Web App
Paperback Engels 2018 1e druk 9781680502435Samenvatting
Elixir and Phoenix are generating tremendous excitement as an unbeatable platform for building modern web applications. For decades OTP has helped developers create incredibly robust, scalable applications with unparalleled uptime. Make the most of them as you build a stateful web app with Elixir, OTP, and Phoenix. Model domain entities without an ORM or a database. Manage server state and keep your code clean with OTP Behaviours. Layer on a Phoenix web interface without coupling it to the business logic. Open doors to powerful new techniques that will get you thinking about web development in fundamentally new ways.
Elixir and OTP provide exceptional tools to build rock-solid back-end applications that scale. In this book, you'll build a web application in a radically different way, with a back end that holds application state. You'll use persistent Phoenix Channel connections instead of HTTP's request-response, and create the full application in distinct, decoupled layers.
In Part 1, start by building the business logic as a separate application, without Phoenix. Model the application domain with Elixir functions and simple data structures. By keeping state in memory instead of a database, you can reduce latency and simplify your code. In Part 2, add in the GenServer Behaviour to make managing in-memory state a breeze. Create a supervision tree to boost fault tolerance while separating error handling from business logic.
Phoenix is a modern web framework you can layer on top of business logic while keeping the two completely decoupled. In Part 3, you'll do exactly that as you build a web interface with Phoenix. Bring in the application from Part 2 as a dependency to a new Phoenix project. Then use ultra-scalable Phoenix Channels to establish persistent connections between the stateful server and a stateful front-end client.
You're going to love this way of building web apps!
You'll need a computer that can run Elixir version 1.5 or higher and Phoenix 1.3 or higher. Some familiarity with Elixir and Phoenix is recommended.
Specificaties
Lezersrecensies
Inhoudsopgave
Introduction
Who This Book Is For
Who This Book Is Not For
About This Book
Online Resources
1. Mapping Our Route
Lay the Foundation with Elixir
Add a Web Interface with Phoenix
Functional Web Development
The Game of Islands
Part I. Define the Functional Core in Elixir
2. Model Data and Behavior
The Benefits
Let’s Build It
Discover the Entities and Model the Domain
Transforming Data
Putting the Pieces Together
Wrapping Up
3. Manage State with a State Machine
A Quick Look at State
A Bit of History
State Machines
A Functional State Machine for Islands
Working Through the States
Wrapping Up
Part II. Add OTP for Concurrency and Fault Tolerance
4. Wrap It Up in a GenServer
A Look at Micro-Services
OTP Solutions
Getting Started with GenServer
Initializing GenServer State
Customizing GenServer Behavior
Naming GenServer Processes
Wrapping Up
5. Process Supervision for Recovery
Fault Tolerance
Linking Processes
Introducing the Supervisor Behaviour
Supervision Strategies
The Child Specification
A Supervisor for the Game
Starting the Supervision Tree
Starting and Stopping Child Processes
Putting the Pieces Together
Recovering State After a Crash
Wrapping Up
Part III. Add a Web Interface with Phoenix
6. Generate a New Web Interface with PhoenixGenerate a New Web Interface with Phoenix
Frameworks
Applications
Generate a New Phoenix Application
Adding a New Dependency
Call the Logic from the Interface
Wrapping Up
7. Create Persistent Connections with Phoenix ChannelsCreate Persistent Connections with Phoenix Channels
The Beauty of Channels
The Pieces That Make a Channel
Let’s Build It
Establish a Client Connection
Converse Over a Channel
Connect the Channel to the Game
Phoenix Presence
Authorization
Wrapping Up
A1. Installing System Dependencies
Elixir
Erlang
Phoenix
Node.js and NPM
Rubrieken
- advisering
- algemeen management
- coaching en trainen
- communicatie en media
- economie
- financieel management
- inkoop en logistiek
- internet en social media
- it-management / ict
- juridisch
- leiderschap
- marketing
- mens en maatschappij
- non-profit
- ondernemen
- organisatiekunde
- personal finance
- personeelsmanagement
- persoonlijke effectiviteit
- projectmanagement
- psychologie
- reclame en verkoop
- strategisch management
- verandermanagement
- werk en loopbaan