OPA : new generation of web development platform

Opa is a new generation of web development platform – it is a new programming language, a new web server, a new database and a new distributed execution engine, all of them tightly integrated to provide a great experience for web developers.

OPA is concise, simple and readable, it is also provides concurrent, dynamically distributed, and extremely secure programming model. Opa is designed to make web development fun, secure and right. Opa is a complete language and not just a framework, the unified approach of Opa delivers a new level of developing experience with unmatched ease of use and security.

While Opa offers all the features that developers have come to expect from a high-end web server, a high-end distributed database management system, frameworks or distribution engine, Opa does not resemble Apache or Tomcat, MySQL or Oracle SQL, Drupal or Ruby on Rails, Google AppEngine or Hadoop.

Developing with Opa is as simple as it gets: first, you write your code with the Opa programming language — and only the Opa programming language, no JavaScript, no SQL, or anything such (this is something new, will take sometime getting used to). Then compile the code, and let Opa analyze security, generate the code for the browser, for the server, for the database, and combine it with the web server. Finally, launch your executable and your browser. No need to independently deploy, administer or maintain a database management system, a web server, frameworks or middleware. And, of course, the application works on any recent browser, whether mobile or desktop. Oh yes, and it is right away “Cloud-ready”.

Let us take a sneak peek preview and take a look at the simplest application: Hello, web.

server = one_page_server("Hello", -> <>Hello, web!</>)

This is the full source code of the application. Without any setup (besides the installation of the compiler), obtaining a complete, deployable application is only a matter of one step:

opa hello_web.opa

This command produces a stand-alone executable binary, containing everything required for execution, including database management, compiled requests, server code, client code, user interface and everything that may be needed to connect them or to handle malicious connections or inputs. Opa generated and checked all this code for you. You may now launch the server:

./hello_web.exe

Or, if you prefer, you may deploy it to a cloud:

opa-cloud hello_web.exe --host localhost --host my@server1 --host my@server2

Your application is launched, load-balanced, and servers share whichever information is necessary.

Although I’ve yet to develop an OPA application of more than average complexity to gauge the actual benefits of it; it looks promising and also something new to try. The OPA API also looks quite complete and well documented.

opa