How to deply Library Simplified applications into your library
Library Simplified application services are designed to be run in the cloud. This provides libraries with no IT infrastructure and few IT management resources the ability to provide high availability services for less.
1: Build your cloud
Goto Amazon and provision server, network and data storage resources .
2: Get the software
Visit the Library Simplified Github Repository here.
3: Configure
Configure the application for your particular envronment and services.
Library Simplified application services are designed to be run in the cloud. This provides libraries with no IT infrastructure and few IT management resources the ability to provide high availability services for less.
1: Build your cloud
Goto Amazon and provision server, network and data storage resources .
2: Get the software
Visit the Library Simplified Github Repository here.
3: Configure
Configure the application for your particular envronment and services.
Build your cloud
"Cloud Computing", by definition, refers to the on-demand delivery of IT resources and applications via the Internet with pay-as-you-go pricing. The following page provides step-by-step instructions for deploying any of the Library Simplified server components in the cloud.
Amazon EC2
Amazon EC2 provides a wide selection of instance types optimized to fit different use cases. Instance types comprise varying combinations of CPU, memory, storage, and networking capacity and give you the flexibility to choose the appropriate mix of resources for your applications. Each instance type includes one or more instance sizes, allowing you to scale your resources to the requirements of your target workload. For Library Simplified (at The New York Public Library) we are using a combination of T2 instances, Relational Database Services, Simple Storage Services, and Content Delivery Network services to implement a low cost, low latency, highly scalable Library Simplified environment.
EC2 Server Types
- T2 instances are burstable performance instances that provide a baseline level of CPU performance with the ability to burst above the baseline. T2 instances are a good choice for workloads that don’t use the full CPU often or consistently, but occasionally need to burst (e.g. web servers, developer environments and small databases). Learn more.
- Relational Database Service (RDS) is a managed service that makes it easy to set up, operate, and scale a relational database in the cloud. It provides cost-efficient and resizable capacity, while managing time-consuming database administration tasks, freeing you up to focus on applications and services. RDS automatically receive patches to the database software and backs up to your database, storing the backups for a your user-defined retention period. Learn more.
- Simple Storage Service (Amazon S3), provides developers and IT teams with secure, durable, highly-scalable object storage. S3 is easy to use, with a simple web services interface to store and retrieve any amount of data from anywhere on the web. Amazon S3 can be used alone or together with other AWS services such as Amazon Elastic Compute Cloud (Amazon EC2), Amazon Elastic Block Store (Amazon EBS), and Amazon Glacier, as well as third party storage repositories and gateways. Learn more
- Content Delivery Networks (CDNs) are a system of distributed servers that deliver webpages and other Web content to a users based on the geographic locations of the user and the origin of the content delivery server in order to reduce network induced latency. Amazon's CloudFront is a content delivery web service. It integrates with other Amazon Web Services products to give developers and businesses an easy way to distribute content to end users with low latency, high data transfer speeds, and no minimum usage commitments. Learn more.
Environment Diagrams
Frontend
The frontend environment represents the publicly exposed service resources that allow for content syndication and discovery. This is the layer of the application that is accessed by the iOS and Android client applications.
Backend
The backend environment represents the service resources that are not exposed publically for data and content management and content hosting and content host integration. This is the layer of the application that is primarily accessed by the circulation server and from time to time by the iOS and Android client applications by way of the OPDS interface.
Get the Software
Library Simplified Code Repository
The Library Simplified application and source code is available on GitHub. GitHub is a web-based Git repository hosting service, which offers all of the distributed revision control and source code management (SCM) functionality of Git.
Quick Links...
- The repositories are located at https://github.com/NYPL-Simplified.
- The project has a general wiki for project. It is can be found at https://github.com/NYPL-Simplified/Simplified/wiki.
Local environment deployment instructions from repositories
To begin to install the applications you will need to follow the deployment instructions provided in the main repositories wiki at https://github.com/NYPL-Simplified/Simplified/wiki/Deployment-Instructions.
Server software
Server Core
The Server Core contains functionality common between various LS servers, including database models and essential class constants, OPDS parsers, and certain configuration details. The OA Content Server, Metadata Wrangler, and Circulation Manager all depend on this code base.
.Circulation Manager
The Circulation Manager is the main connection between a library's collection and Library Simplified's various client-side applications. It handles user authentication, combines licensed works with open access content from the OA Content Server, and data from the Metadata Wrangler. NOTE: This application depends on the Server Core as a git submodule.
Optional Server Software
There are optional server components that a library may implement - Open Access (OA) Content Server, Metadata Wrangler and Card Creator. These applications are purely optional because The New York Public Library will be providing functions for some of these servers as a service to implementing libraries so they do not have to install and host the servers. Card Creator is an optional application which will not be provided as a service which needs to be customized on an individual basis by libraries. which will allow libraries to incorporate remote library card application and proof of eligibility documentation in a secure and controlled process so that user data and privacy is secured in transit and at rest during the application review process and promptly deleted from library systems upon acceptance or rejection.
- OA Content Server at https://github.com/NYPL-Simplified/content_server
The OA Content Server collects and parses sources and preserves metadata for open access works, serving them up in a feed with verbose OPDS entries. NOTE: This application depends on the Server Core as a git submodule.
- Metadata Wrangler at https://github.com/NYPL-Simplified/metadata_wrangler
The Metadata Wrangler utilizes and intelligently amalgamates a wide variety of information sources for library ebooks and incorporates them into the reading experience for users by improving selection, search, and recommendations.
NOTE: This application depends on the Server Core as a git submodule.
- Card Creator at https://github.com/NYPL-Simplified/card-creator
The Card Creator application allows libraries to incorporate remote library card application and proof of eligibility documentation in a secure and controlled process so that user data and privacy is secured in transit and at rest during the application review process and promptly deleted from library systems upon acceptance or rejection.
Client Application Software
The client applications are currently contained in open repositories accept for the those DRM compponents that are derivative products which are in private repositories. Partner libraries may obtain access to the private repositories and the closed repositories for DRM that require a commercial license. Once the commercial license is obtained users can gain access to the code libraries that link to the commercial binaries distributed independently by the commercial DRM vendor.
Mobile Clients
- iOS Client at https://github.com/NYPL-Simplified/Simplified-iOS.
The iOS client is a native application written in Objective C and C++. There are optional cocoa pods for help ticket support. It can be built with or without DRM.
- Android Client at https://github.com/NYPL-Simplified/android.
The Android client is a native application written in Java and C++. There are optional components for help ticket support. It can be built with or without DRM.
Web Clients
- Web Reader Client at https://github.com/NYPL-Simplified/webpub-viewer.
The web client is a javascript application using typescript and react.js.
- OPDS Web Catalog (with web reader) at https://github.com/NYPL-Simplified/opds-web-client.
The web client is a javascript application using typescript and react.js.
NOTE: The application can be built without DRM support as an Open Access (non DRM) content e-reader. However, a Readium License is still required. This license can be obtained directly from the Readium Foundation at special Non-Profit rate. Additionally Minitex provide a special Non-profit license as well specifically to public, state and academic libraries as well at a reduce price. Visit their product page here to learn more.
IT Orchestration and Containerization
To make initital implementation and maintenance easier and in keeping with modern DeveOps practices for technology products the Libary Simplified community practices Continuous Integrations and Continuos Delivery of the midleware through the use of operating system virtualization using containerizationand community managed open source IT Orchestration tools such as Ansible for automating software provisionsing, configuration and application deployment.
- Circulation Manager Cointainer Repository
- Docker Hub
- Quickstart Wiki for Library Simplified
Containers
Docker is an open-source project that automates the deployment of applications inside software containers, by providing an additional layer of abstraction and automation of operating-system-level virtualization on Linux. Docker can package an application and its dependencies in a virtual container that can run on any Linux server. This helps enable flexibility and portability on where the application can run, on premises, in a public cloud, on a private cloud, or bare metal machines.
- Ansible Software
- Ansible Playbook Repository Repository (Amigos Lirbary Services)
- Ansible Playbooks Repository (Minitex)
Ansible Playbooks
The Ansible Playbooks are the files that are used by the open source automation engine, Ansible. The playbooks provide the instructions and linformation necessay to remotely provision the necessary Amazon Web Services environment to host the application. They also automate the deployment of the Library Simplified Circulation Manager Docker Containers, application servers, databases and other related applciations.
Using a deployment management tool like Jenkins, a docker containter can be pulled down by the repsective library from Docker Hub as a self contained application container onto your infrastructure (for example EC2.) This simplifies application implementation and deployment by prepackaging the application and all the required stack technolgies and dependencies with out having to manualy configure or run PIP and GIT commands. Simply pull the latest compatible container version, update the JSON configuration file during the deploy process. For certain versions you may have to run some update scripts on your DB server.
Configure
The Configuration instructions can be found on github on the main project's wiki at https://github.com/NYPL-Simplified/Simplified/wiki/Configuration.
Additionally, guides to configureing youer library, different conetnet and meta dat integrations can be found at www.librarysimplified.org/documents.
Maintaining the servers
The /bin
directory contains autmated scripts that should be run every 5 minutes to keep your collections updated as well as fix data from time to time. The wiki link below lists the scripts and their purpose. Unless you are running a separate instance of Metadata Wrangler and OA Content Server as opposed using the NYPL public service, those instructions and scripts can be ignored. They will be done as part of NYPL's maintenance.
Automated Jobs https://github.com/NYPL-Simplified/Simplified/wiki/AutomatedJobs#jobs-that-should-be-run-as-needed
Management and Monitoring Tools
The ability to monitor your cloud environment and application services is important. Libraries and their technical staff need simple tools for keeping your ebook service running and scallable so that users have a wonderful and consistent Library Ebook service experience. While you may have your own tools that you prefer to manage your enterprise or cloud systems, the following are examples of what the Library Simplifed Team use for the project, Open eBooks and the New York Public Library.
Environment Management
Product | Delivery | Purpose |
---|---|---|
Enterprise | This tool allows you to manage your cloud infrastructure and application service configurations. |