Designing for Scalability with Erlang/OTP

Implement Robust, Fault-Tolerant Systems


Author: Francesco Cesarini,Steve Vinoski

Publisher: "O'Reilly Media, Inc."

ISBN: 1449361560

Category: Computers

Page: 482

View: 7789

If you need to build a scalable, fault tolerant system with requirements for high availability, discover why the Erlang/OTP platform stands out for the breadth, depth, and consistency of its features. This hands-on guide demonstrates how to use the Erlang programming language and its OTP framework of reusable libraries, tools, and design principles to develop complex commercial-grade systems that simply cannot fail. In the first part of the book, you’ll learn how to design and implement process behaviors and supervision trees with Erlang/OTP, and bundle them into standalone nodes. The second part addresses reliability, scalability, and high availability in your overall system design. If you’re familiar with Erlang, this book will help you understand the design choices and trade-offs necessary to keep your system running. Explore OTP’s building blocks: the Erlang language, tools and libraries collection, and its abstract principles and design rules Dive into the fundamentals of OTP reusable frameworks: the Erlang process structures OTP uses for behaviors Understand how OTP behaviors support client-server structures, finite state machine patterns, event handling, and runtime/code integration Write your own behaviors and special processes Use OTP’s tools, techniques, and architectures to handle deployment, monitoring, and operations

Introducing Erlang

Getting Started in Functional Programming


Author: Simon St. Laurent

Publisher: "O'Reilly Media, Inc."

ISBN: 149197334X

Category: Computers

Page: 212

View: 1907

If you’re new to Erlang, its functional style can seem difficult, but with help from this hands-on introduction, you’ll scale the learning curve and discover how enjoyable, powerful, and fun this language can be. In this updated second edition, author Simon St.Laurent shows you how to write simple Erlang programs by teaching you one skill at a time. You’ll learn about pattern matching, recursion, message passing, process-oriented programming, and establishing pathways for data rather than telling it where to go. By the end of your journey, you’ll understand why Erlang is ideal for concurrency and resilience. Get cozy with Erlang’s shell, its command line interface Define functions, using the fun tool, to represent repeated calculations Discover atoms, pattern matching, and guards: the foundations of your program structure Delve into the heart of Erlang processing with recursion, strings, lists, and higher-order functions Create processes, send messages among them, and apply pattern matching to incoming messages Store and manipulate structured data with Erlang Term Storage and the Mnesia database Learn about Open Telecom Platform, Erlang’s open source libraries and tools

Introducing Elixir

Getting Started in Functional Programming


Author: Simon St. Laurent,J. David Eisenberg

Publisher: "O'Reilly Media, Inc."

ISBN: 1491956860

Category: Computers

Page: 248

View: 7345

Smooth, powerful, and small, Elixir is an excellent language for learning functional programming, and with this hands-on introduction, you’ll discover just how powerful Elixir can be. Authors Simon St. Laurent and J. David Eisenberg show you how Elixir combines the robust functional programming of Erlang with an approach that looks more like Ruby, and includes powerful macro features for metaprogramming. Updated to cover Elixir 1.4, the second edition of this practical book helps you write simple Elixir programs by teaching one skill at a time. Once you pick up pattern matching, process-oriented programming, and other concepts, you’ll understand why Elixir makes it easier to build concurrent and resilient programs that scale up and down with ease. Get comfortable with IEx, Elixir’s command line interface Learn Elixir’s basic structures by working with numbers Discover atoms, pattern matching, and guards: the foundations of your program structure Delve into the heart of Elixir processing with recursion, strings, lists, and higher-order functions Create Elixir processes and send messages among them Store and manipulate structured data with Erlang Term Storage and the Mnesia database Build resilient applications with the Open Telecom Platform

Erlang and Elixir for Imperative Programmers


Author: Wolfgang Loder

Publisher: Apress

ISBN: 1484223942

Category: Computers

Page: 256

View: 5032

Learn and understand Erlang and Elixir and develop a working knowledge of the concepts of functional programming that underpin them. This book takes the author’s experience of taking on a project that required functional programming and real-time systems, breaks it down, and organizes it. You will get the necessary knowledge about differences to the languages you know, where to start, and where to go next. Have you been told by your customer or manager that they heard good things about Erlang, you should use it for the next project? Never had to deal with functional programming or real-time systems? In 2014, the author, Wolfgang Loder, developed a repository for digital assets that had to deliver those assets in binary form quickly and reliably, being able to deal with at least hundreds of requests per second. Since he could decide the architecture and software stack of the solution, he immediately thought of Erlang and its libraries and started to evaluate this option. It was not long after that he discovered Elixir, which sits on top of the Erlang virtual machine and has features more palatable for non-functional programmers, although it is a functional programming language itself. Erlang and Elixir for Imperative Programmers gives you a basis for deciding whether the effort is viable for your next project. This book is partly a tale of the author's own experience and partly a description of the bigger and more subtle differences between Erlang/Elixir and languages such as C++, Java, and C#. What You'll Learn Discover functional programming, Erlang, and Elixir Work on service design and service features Set up your environment: deployment, development, and production Implement the service including public interface, asset processing, and deployment Use the patterns and concepts found in Erlang including type creation concepts and code structuring. Who This Book Is For Experienced and savvy programmers, coders, and developers new to Erlang and Elixir.

Building Scalable Applications With Erlang


Author: Jerry Jackson

Publisher: Addison-Wesley Professional

ISBN: 9780321636461

Category: Computers

Page: 600

View: 5348

Erlang is emerging as a leading language for concurrent programming in mission-critical enterprise environments where applications must deliver exceptional reliability, availability, and scalability. It's already used by organizations ranging from Facebook to Amazon, and many others are adopting or considering it. As a functional language, however, Erlang is radically different from conventional object-oriented languages like C++ and Java. This book quickly brings experienced object-oriented programmers up to speed with both Erlang and the principles of functional programming. Jerry Jackson thoroughly explains Erlang's key concepts, principles, and features, bridging the conceptual gaps that often frustrate object developers. Next, he shows how to use Erlang to build massively-scalable real-world systems with up to "nine nines" availability: that is, up to 99.9999999% uptime. Coverage includes: What Erlang is, and why it offers so much potentia What it means to be "concurrency-oriented, and how to design concurrency-oriented applications How to use functional features, pattern matching, and Erlang's standard libraries How to manage concurrency and mutable state, and work with the Mnesia database How to write distributed software with Erlang How to use powerful additional capabilities built into Erlang's Open Telecom Platform (OTP) How to interact with Java, C, and other languages How to use Erlang's bundled web server and debugger, and much more

Erlang Programming

A Concurrent Approach to Software Development


Author: Francesco Cesarini,Simon Thompson

Publisher: "O'Reilly Media, Inc."

ISBN: 0596555857

Category: Computers

Page: 498

View: 9537

This book is an in-depth introduction to Erlang, a programming language ideal for any situation where concurrency, fault tolerance, and fast response is essential. Erlang is gaining widespread adoption with the advent of multi-core processors and their new scalable approach to concurrency. With this guide you'll learn how to write complex concurrent programs in Erlang, regardless of your programming background or experience. Written by leaders of the international Erlang community -- and based on their training material -- Erlang Programming focuses on the language's syntax and semantics, and explains pattern matching, proper lists, recursion, debugging, networking, and concurrency. This book helps you: Understand the strengths of Erlang and why its designers included specific features Learn the concepts behind concurrency and Erlang's way of handling it Write efficient Erlang programs while keeping code neat and readable Discover how Erlang fills the requirements for distributed systems Add simple graphical user interfaces with little effort Learn Erlang's tracing mechanisms for debugging concurrent and distributed systems Use the built-in Mnesia database and other table storage features Erlang Programming provides exercises at the end of each chapter and simple examples throughout the book.

Erlang and OTP in Action


Author: Martin Logan,Eric Merritt,Richard Carlsson

Publisher: Manning Publications

ISBN: 9781933988788

Category: Computers

Page: 397

View: 8267

This hands-on guide is perfect for readers just learning Erlang or for those who want to apply their theoretical knowledge of this powerful language. Beginners can delve into the Erlang language and OTP runtime while experienced users can design complex systems in Erlang.

Mastering RabbitMQ


Author: Emrah Ayanoglu,Yusuf Aytas,Dotan Nahum

Publisher: Packt Publishing Ltd

ISBN: 1783981539

Category: Computers

Page: 286

View: 2298

Master the art of developing message-based applications with RabbitMQ About This Book Learn how to administer, manage, and extend your own message broker, RabbitMQ Develop clients to make a message bridge between your software systems using RabbitMQ Discover how to achieve proficiency with RabbitMQ with the well-defined descriptions of the topics Who This Book Is For If you are an intermediate-level RabbitMQ developer, who wants to achieve professional-level expertise in the subject, this book is for you. You'll also need to have a decent understanding of message queuing. What You Will Learn Administer RabbitMQ using different tools Understand the roots and details of messaging, message brokers, and AMQP protocol Scale the RabbitMQ server using the clusters and high availability techniques Extend RabbitMQ by developing the Erlang OTP-based applications that use the RabbitMQ API Manage the RabbitMQ server using its powerful tools Monitor the RabbitMQ Server using different open source tools such as Nagios, Munin, and Zabbix Ensure your RabbitMQ's security using SSL, SASL, and access control Develop RabbitMQ clients using Java, Python, and C# with an industry example In Detail RabbitMQ is one of the most powerful Open Source message broker software, which is widely used in tech companies such as Mozilla, VMware, Google, AT&T, and so on. RabbitMQ gives you lots of fantastic and easy-to-manage functionalities to control and manage the messaging facility with lots of community support. As scalability is one of our major modern problems, messaging with RabbitMQ is the main part of the solution to this problem. This book explains and demonstrates the RabbitMQ server in a detailed way. It provides you with lots of real-world examples and advanced solutions to tackle the scalability issues. You'll begin your journey with the installation and configuration of the RabbitMQ server, while also being given specific details pertaining to the subject. Next, you'll study the major problems that our server faces, including scalability and high availability, and try to get the solutions for both of these issues by using the RabbitMQ mechanisms. Following on from this, you'll get to design and develop your own plugins using the Erlang language and RabbitMQ's internal API. This knowledge will help you to start with the management and monitoring of the messages, tools, and applications. You'll also gain an understanding of the security and integrity of the messaging facilities that RabbitMQ provides. In the last few chapters, you will build and keep track of your clients (senders and receivers) using Java, Python, and C#. Style and approach An easy-to-follow guide, full of hands-on examples based around managing, monitoring, extending, and securing RabbitMQ and its internal tools. You will learn how to develop your own clients using Java, Python, and C#.