{"__v":0,"_id":"588f722bbcace50f0052b9fc","category":{"version":"588f722bbcace50f0052b9e1","project":"565f5fa26bafd40d0030a064","_id":"588f722bbcace50f0052b9e7","__v":0,"sync":{"url":"","isSync":false},"reference":false,"createdAt":"2015-12-17T21:29:23.551Z","from_sync":false,"order":5,"slug":"server-installation-configuration","title":"Self Hosting"},"parentDoc":null,"project":"565f5fa26bafd40d0030a064","user":"565f3941ea46251700972783","version":{"__v":1,"_id":"588f722bbcace50f0052b9e1","project":"565f5fa26bafd40d0030a064","createdAt":"2017-01-30T17:04:43.410Z","releaseDate":"2017-01-30T17:04:43.410Z","categories":["588f722bbcace50f0052b9e2","588f722bbcace50f0052b9e3","588f722bbcace50f0052b9e4","588f722bbcace50f0052b9e5","588f722bbcace50f0052b9e6","588f722bbcace50f0052b9e7"],"is_deprecated":false,"is_hidden":false,"is_beta":false,"is_stable":true,"codename":"","version_clean":"5.3.0","version":"5.3.0"},"updates":["57e549b2685f7c19007fba3b","57ea8d091780cd170064f282","57eaecc7c878550e00b3c45d","5854012c599af1190003774a"],"next":{"pages":[],"description":""},"createdAt":"2015-12-04T21:22:55.930Z","link_external":false,"link_url":"","githubsync":"","sync_unique":"","hidden":false,"api":{"results":{"codes":[]},"settings":"","auth":"required","params":[],"url":""},"isReference":false,"order":0,"body":"Nanoscale.io is comprised of four main components, as illustrated in the high-level architecture diagram below… \n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": []\n    }\n  ]\n}\n[/block]\n\n[block:image]\n{\n  \"images\": [\n    {\n      \"image\": [\n        \"https://files.readme.io/c0d6d8c-nanoscale_architecture.png\",\n        \"nanoscale_architecture.png\",\n        1463,\n        968,\n        \"#dce6dd\"\n      ]\n    }\n  ]\n}\n[/block]\n## 1. Nanoscale.io Server\n\nThe nanoscale.io server reads API definitions from a configuration repository and activates corresponding HTTP endpoints or routes, which can be invoked by client applications that have access to the nanoscale.io server.  These API definitions can be configured within nanoscale.io to either return responses based on JavaScript logic, or proxy the requests to one or more external target HTTP endpoints or databases such as SQLServer, MongoDB, and PostgreSQL and return a “composite” response. The nanoscale.io server is a compiled binary that contains its own web server, JavaScript interpreter, and SQLlite database, making it a completely self-contained solution that can be easily installed in “local mode” on virtually any operating system. The nanoscale.io server can also run in “server mode” with multiple instances communicating to a shared PostrgreSQL database that contains API definitions, enabling high-concurrency and scalability for enterprise use cases. (For more information, see the section called [Running nanoscale.io](doc:running-nanoscale)  in Local or Server Modes.)\n\n## 2. Nanoscale.io Admin Web App\n\nThe nanoscale.io Admin Web App is a single page HTML application that enables developers to define and test API Proxy Endpoints and corresponding business logic workflow within a streamlined user interface. This web app is completely powered by the nanoscale.io Engine, providing a self-contained environment that can run on virtually any operating system and any modern browser. (See the [Quick Start Guide](doc:quick-start-guide)  for more information on how to use the nanoscale.io Admin Dashboard.)\n\n## 3. Configuration Data Repository\n\nAPI definitions created through the nanoscale.io Admin Dashboard are saved in the Configuration Data Repository, which is a SQLlite database when running in local mode, and a PostgreSQL database in single or clustered server mode. API definition metadata can be exported to JSON format for migration across nanoscale.io instances.\n\n## 4. Logs\n\nNanoscale.io outputs all logs to STDOUT by default, as well as either to a local Bleve instance of an Elasticsearch instance. You can capture the STDOUT log information to send to third party services like Splunk. We recommend using Elasticsearch for nanoscale.io deployments that you intend to treat as a production server.","excerpt":"","slug":"components-architecture","type":"basic","title":"Components Architecture"}

Components Architecture


Nanoscale.io is comprised of four main components, as illustrated in the high-level architecture diagram below… [block:image] { "images": [ { "image": [] } ] } [/block] [block:image] { "images": [ { "image": [ "https://files.readme.io/c0d6d8c-nanoscale_architecture.png", "nanoscale_architecture.png", 1463, 968, "#dce6dd" ] } ] } [/block] ## 1. Nanoscale.io Server The nanoscale.io server reads API definitions from a configuration repository and activates corresponding HTTP endpoints or routes, which can be invoked by client applications that have access to the nanoscale.io server. These API definitions can be configured within nanoscale.io to either return responses based on JavaScript logic, or proxy the requests to one or more external target HTTP endpoints or databases such as SQLServer, MongoDB, and PostgreSQL and return a “composite” response. The nanoscale.io server is a compiled binary that contains its own web server, JavaScript interpreter, and SQLlite database, making it a completely self-contained solution that can be easily installed in “local mode” on virtually any operating system. The nanoscale.io server can also run in “server mode” with multiple instances communicating to a shared PostrgreSQL database that contains API definitions, enabling high-concurrency and scalability for enterprise use cases. (For more information, see the section called [Running nanoscale.io](doc:running-nanoscale) in Local or Server Modes.) ## 2. Nanoscale.io Admin Web App The nanoscale.io Admin Web App is a single page HTML application that enables developers to define and test API Proxy Endpoints and corresponding business logic workflow within a streamlined user interface. This web app is completely powered by the nanoscale.io Engine, providing a self-contained environment that can run on virtually any operating system and any modern browser. (See the [Quick Start Guide](doc:quick-start-guide) for more information on how to use the nanoscale.io Admin Dashboard.) ## 3. Configuration Data Repository API definitions created through the nanoscale.io Admin Dashboard are saved in the Configuration Data Repository, which is a SQLlite database when running in local mode, and a PostgreSQL database in single or clustered server mode. API definition metadata can be exported to JSON format for migration across nanoscale.io instances. ## 4. Logs Nanoscale.io outputs all logs to STDOUT by default, as well as either to a local Bleve instance of an Elasticsearch instance. You can capture the STDOUT log information to send to third party services like Splunk. We recommend using Elasticsearch for nanoscale.io deployments that you intend to treat as a production server.