BLOG

Category: 'community'


Iron Foundry

Choosing the Right Database Option for Your Iron Foundry Applications

Iron Foundry offers a host of database services that developers can leverage when building Iron Foundry applications. While there may not be a “wrong” choice (although in some cases, there are horribly inefficient choices!), how can we choose the best database for the situation at hand? Below, we look at each database option in Iron Foundry and why you would, or would not, select it for your application.


MongoDB


What is it?

MongoDB is a popular open-source NoSQL database. While called a “document database”, MongoDB does not store unstructured documents like PDFs or Microsoft Word files, but rather, stores its data as JSON-like files. Each document represents a database record while a collection is similar to a database table. However, unlike traditional relational databases with a fixed schema, MongoDB collections have no such restriction and each document could have entirely different fields. Developers use the Mongo Query Language to find records in MongoDB collections. Through the use of drivers, MongoDB supports a wide variety of languages such as Ruby, Scala, C#, Node, Java and more. MongoDB supports a variety of features (such as replication and indexing) that you’d typically find in RDMS offerings, but also offers unique capabilities such as auto-sharding and batch processing via MapReduce.

When to use it?

There’s actually an excellent page on the MongoDB site that outlines the core use cases and anti-patterns. They also have a useful list of customer stories that explain (sometimes with attachments!) how they are using MongoDB. Basically, MongoDB is a good choice for high performing apps that have complex data objects with a variable schema. Don’t choose MongoDB if you have intense cross-object transactions and heavy SQL coding requirements. While there has been some backlash against MongoDB in the past year, it remains crazy popular for its performance, approachability and lively ecosystem.

Microsoft SQL Server


What is it?

SQL Server is the flagship database product from Microsoft. It uses a relational structure and is made up of databases, tables and records. The tables in a SQL Server database have a fixed schema made up of typed columns. SQL Server has some of the capabilities that you expect to find in a traditional relational database: stored procedures, indexes, constraints and cross-object transactions. Data is queried through the rich T-SQL syntax that allows variables, a full set of operations for creating/reading/updating/deleting data, control flow statements and more. Starting with SQL Server 2005, developers can also write stored procedures and triggers based on the .NET language. While SQL Server uses a proprietary data streaming format (TDS), there are still many ways to access SQL Server data from non-Microsoft clients through ODBC. There are also many libraries to make this easier in Ruby, Node, and Java. While relational databases sometimes get a bad rap for poor scalability, many high volume web sites rely heavily on relational databases like SQL Server. SQL Server consistently ranks as a leader among relational database providers  in “transactions per second” metrics as calculated by TPC.

When to use it?

If you have a relatively static data structure and have many objects with inter-relationships, SQL Server is a good choice. Likewise, if you already have an investment in SQL Server tools, then using the Iron Foundry version will be very straightforward. Developers can easily use the SQL Server Management Studio against Iron Foundry instances and treat the PaaS database just like one installed locally. Microsoft themselves tout use cases for internal business applications, high volume storage for web applications, and more.

MySQL


What is it?

MySQL, now owned by Oracle, claims to be the most popular open source database and is the “M'” in the ubiquitous LAMP (Linux/Apache/MySQL/PHP) web stack. It is a relational database that runs on multiple platforms including Linux, Windows, Mac OS, Solaris and IBM AIX. MySQL has a wide range of capabilities including support for stored procedures, triggers, database views, indexing, and ACID-compliant transactions. Something that’s unique about MySQL (vs other relational databases) is that it offers multiple storage engines that can be used for a given table. Some engines support data types that others do not, and some offer differently levels of support for transactions and indexing. There are engines provided natively, as well as engines created by partners and community members. Queries against MySQL data are performed use SQL that should familiar to anyone who has coded against databases in the past. MySQL offers a series of drivers for client connectivity and there are plenty of other libraries for technologies like Node and Ruby.

When to use it?

Some of the largest web properties in the world rely on MySQL for their data storage. Many of the same reasons that you would use Microsoft SQL Server apply here as well. Structured data, object relationships, and a need for transactions and indexing. Also, if you already have a skills investment in MySQL, then using MySQL for your Iron Foundry application is a no-brainer. The MySQL team has a very nice article on why you’d choose MySQL over Microsoft SQL Server, and Microsoft has the same sort of article on their site. You won’t really go wrong with either choice!

Neo4j


What is it?

Neo4j is an open-source, NoSQL graph database. While many of us are familiar with the other types of NoSQL databases (document databases like MongoDB, or key-value stores like Redis), graph databases are a bit more obscure. Graph databases put a high priority on the relationships between objects and makes it easy to query these relationships. In fact, it’s often much easier than querying relationships in a relational database! The “things” in a graph database are called a node, and the “relationships” are called edges. The Neo4j database is Java-based and stores its data on disk. It’s designed to be very fast and also ACID transaction compliant. The database itself can be embedded within an application or deployed as a full-fledged standalone server. While the API places a premium on Java, developers can also access it through an HTTP/REST interface. Data queries are executed using the Cypher Query Language which is designed for efficient traversal of graphs.

When to use it?

This database will be a great choice for Iron Foundry applications that place a premium on relationships between schema-less data structures. That means that this will be a good fit for social networks, genome analysis, recommendation algorithms and more.

PostgreSQL


What is it?

PostgreSQL is an increasingly popular open-source object-relational database system. You can run PostgreSQL on nearly every operating system including Linux, UNIX, and Windows. It’s a very robust database that is ACID-compliant and has features like joins, views, triggers, stored procedures and native programming interfaces for popular languages/frameworks like Java, .NET, Python, Ruby, ODBC and more. PostgreSQL has a lot of sophisticated features such as GIST indexing, table inheritance,  and a rules system. Queries against the structured tables are done using SQL and should be easy for any database programmer to use. An article about the rise of PostgreSQL generated a lengthy discussion on Hacker News where many proponents and detractors of the platform debated the merits and shortfalls of the platform. It’s a good read.

When to use it?

PostgreSQL has some prominent customers across industries. You’ll often find PostgreSQL compared to MySQL or SQL Server. In essence though, consider choosing PostgreSQL for your Iron Foundry application if you want to use an open-source database for a high-performing (web) application that uses SQL queries. It’s a great fit for complex scenarios that can take advantage of the differentiating features like inheritance and advanced query optimization.

Redis


What is it?

Redis is a fast, widely used open-source NoSQL database that uses a key-value store paradigm. Data is typically stored in-memory, although now users can optionally snapshot data to disk periodically. It runs on UNIX/Linux/MacOS (although non-production quality ports for Windows exist). Redis supports a handful of data types including strings, lists (of strings), sets (unordered collections of strings), sorted sets and hashes (which are useful for object representations). While optimized for individual key retrieval, database content can be filtered/searched through operations like ZRANGE, LRANGEGETRANGE and more. Redis also has some cool features like content expiration, and a pub/sub engine that opens up a whole host of possibilities. There are a variety of data access libraries available for languages/frameworks like .NET, Java, Node, PHP and many more.

When to use it?

Use Redis with your Iron Foundry application when you want blazing speed and have a data set that can sit comfortably in RAM. You would need to be comfortable with the prospects of losing data in the event of a server failure. Many large organizations are using Redis, often to provide a high performing caching layer to their application. You’ll also see everything from  storing session data to creating URL shorteners built with Redis.

Read More
Iron Foundry

Sync with Cloud Foundry

On the Iron Foundry Project we are diligent about keeping up to date with any significant Cloud Foundry changes. With the recent refactoring the Cloud Foundry team has been working there has been a lot more to keep track of. For information on the Cloud Foundry side of things check out these write ups by Mark Lucovsky (Cloud Foundry Roadmap: Below the Water Line, Refactoring the VCAP Repo, and Heads Up on Some New Cloud Controller Features). To check out the changes, with appropriate Iron Foundry extensions, check out the Iron Foundry Repositories. If you'd like to try out your own custom deployment, the scripts have been updated accordingly also. VMC CLI One of the key things we've done in the last few weeks is change the vmc (usage information) from preview release to a full release. So to get the latest Iron Foundry enabled vmc be sure to uninstall the previous version: Then simply use gems to install the latest (KB Article Available): If ruby and gems isn't installed on Windows yet follow these quick steps. Install Ruby for Windows from Ruby Installer. This is tested using version 1.9.3. During installation you can either add ruby to your PATH or add it manually later. Run the following commands from a command prompt. You should ensure that ruby and sqlcmd are in your PATH as well. Checking ruby version & installing on Windows:

Read More
Iron Foundry

Pizza, Beer, PaaS and Lots of Frameworks

This past Wednesday the Iron Foundry Team held a Pizza and PaaS Meetup at Tier 3 () headquarters in Bellevue, Washington. It was a great event with individuals coming to check out what the Iron Foundry Project enables and also to talk about PaaS Technologies in general.

Read More
Iron Foundry

PDX Cloud Foundry Hackathon

Members of the Iron Foundry Contributors Team will be attending the PDX Cloud Foundry Hackathon this coming April 14th at Puppet Labs in Portland, Oregon. If you're in Portland or want to come to Portland for a great day of Pizza, Beer, and DevOping come and check out the event. Ok, so I got your attention with the beer and pizza, but what's the hacking really about? The event is going to be multi-track with a focus on hacking the Cloud Foundry (and Iron Foundry) Code base. This track will dive into what is in the code base and how it is put together. The other track will focus on working to deploy and build applications specifically for the Cloud Foundry + Iron Foundry based platforms. In addition to the main tracks there are a few other workshops we'll be putting on. These include:

  • On Premise, Off Premise Cloud Foundry - As quoted on the description "You have internal infrastructure and external infrastructure in this "cloud" thing and would like to utilize both... we'll dive into that."
  • Cloud Foundry + Iron Foundry and Bridging the Gaps - "Now we're talking FULL stack across every major stack. Iron Foundry, the missing linq in Cloud Foundry. Adding .NET & having it play nicely with Node.js, Ruby on Rails, and more. We'll also dive into SQL Server, Mongo, and how to make the best use of RDBMS + NoSQL bits. Making the most of the abilities with PaaS."
  • The Interoperable Cloud App Gallery - "Ingy döt Net would like to see a huge collection of apps that have been made to work on any PaaS solution. Think of it as the http://rosettacode.org/ of PaaS. Ingy started a GitHub organization called Cloud-Apps that is meant to curate forks of popular apps that have been made to work with one or more PaaS solutions like:  Cloud Foundry, Stackato, AppFog, PaaS.io, Iron Foundry, OpenShift, Heroku, DotCloud, etc. He is giving out commit to whomever wants it!"
 

Read More
Iron Foundry

Caldecott with MS SQL Server!

Yesterday we launched our new testing environment that you can read about. With that announcement we added support for Caldecott which allows you to tunnel from your environment to services in the Cloud Foundry environment. Today we have enabled MS SQL support with Caldecott into our .ME environment and also our own version of the Cloud Foundry VMC that has all of the Iron Foundry support built in. Install VMC Iron Foundry Install Ruby for Windows from Ruby Installer. This is tested using version 1.9.3. During installation you can either add ruby to your PATH or add it manually later. Run the following commands from a command prompt. You should ensure that ruby and sqlcmd are in your PATH as well. Checking ruby version:

C:\>ruby --version
ruby 1.9.3p125 (2012-02-16) [i386-mingw32]
C:\>gem install vmc-ironfoundry --pre
Caldecott and MS SQL To use Caldecott on Iron Foundry from a Windows machine to connect to a provisioned MS SQL database, follow these steps. Install Ruby for Windows from Ruby Installer. This is tested using version 1.9.3. During installation you can either add ruby to your PATH or add it manually later. Run the following commands from a command prompt. You should ensure that ruby and sqlcmd are in your PATH as well. Checking ruby version:
C:\>ruby --version
ruby 1.9.3p125 (2012-02-16) [i386-mingw32]
Ensuring that sqlcmd.exe is in your PATH. If not, it is located by default at C:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe
C:\>sqlcmd /?
Microsoft (R) SQL Server Command Line Tool
Version 10.50.2500.0 NT x64
Copyright (c) Microsoft Corporation. All rights reserved.
Install the vmc-IronFoundry gem
C:\>gem install vmc-IronFoundry --pre
Fetching: vmc-IronFoundry-0.3.16.IF.1.gem (100%)
Successfully installed vmc-IronFoundry-0.3.16.IF.1
1 gem installed
Installing ri documentation for vmc-IronFoundry-0.3.16.IF.1...
Installing RDoc documentation for vmc-IronFoundry-0.3.16.IF.1...
Target api.ironfoundry.me and log in to your account
C:\>vmc target api.ironfoundry.me
Successfully targeted to [http://api.ironfoundry.me]
C:\>vmc login --email  --passwd XXXYYYZZZ
Attempting login to [http://api.ironfoundry.me]
Successfully logged into [http://api.ironfoundry.me]
Provision an MS SQL database
C:\>vmc create-service mssql
Creating Service [mssql-c902d]: OK
Tunnel to your database
C:\>vmc tunnel mssql-c902d sqlcmd
Deploying tunnel application 'caldecott'.
Uploading Application:
 Checking for available resources: OK
 Packing application: OK
 Uploading (1K): OK
Push Status: OK
Binding Service [mssql-c902d]: OK
Staging Application 'caldecott': OK
Starting Application 'caldecott': OK
Getting tunnel connection info: OK
Service connection info:
 username : uxeBbNM0jYAFS
 password : psOmxGWibimeX
 name : d7dedaf7e01ae42568c07c44ec30bff99
Starting tunnel to mssql-c902d on port 10000.
Launching 'sqlcmd -S localhost,10000 -U uxeBbNM0jYAFS -P psOmxGWibimeX -d d7dedaf7e01ae42568c07c44ec30bff99'
1>
You can now run commands from within sqlcmd against your database!
1> select @@VERSION
2> GO
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)
 Jun 17 2011 00:54:03
 Copyright (c) Microsoft Corporation
 Enterprise Edition (64-bit) on Windows NT 6.1  (Build 7601: Service Pack 1) (Hypervisor)
In addition, you can use the displayed connection information to connect via SQL Management Studio. Just use localhost,10000 as the "Server name". Be sure to start the tunnel first and keep it open during the time you're using Management Studio. Quitting sqlcmd will close the tunnel. connect_local.png

Read More
Iron Foundry

New Iron Foundry Test Environment .ME

Today we have released a major update to the Iron Foundry test environment. Currently this environment is supporting over 350 developers constantly deploying/hosting applications using .NET and the Iron Foundry developer tool set. Here are some of the major changes and highlights:

  • Multi-Runtime Support: We have extended the offering to support polyglot applications with the support of Java, Ruby, PHP, Python, Node.js, and .NET.
  • Rabbit MQ Support: Rabbit MQ is now added as a service offering to use in the environment. For more information about Rabbit MQ visit our quick start guide.
  • Extended Database Support: Adding support for MySQL and Postgres to extend the other databases currently offered (MS SQL, Redis, and MongoDB).
  • Caldecott Support: We have enabled Caldecott support for the entire environment so that you can tunnel to backend services. Learn more about it at the Cloud Foundry Blog.
  • No more trial expiration: We have removed the 90 day trial limitation so that you can test your application longer if needed. This is a testing environment and we do not give support for it beyond what a standard test environment needs so please do not run production applications on it. The limitation is now based on resources being provisioned to 3 application instances and 2 database instances. If you need more contact us so that we can help.
  • New Friendly Url: The new friendly url is ironfoundry.me and will enable your applications with [appname].ironfoundry.me. The API to access the new environment is api.ironfoundry.me.
For the developers who already have signed up you will not have to sign up again as we have ported your user names and passwords over to the ironfoundry.me environment. As this is a new environment with many features, we decided to keep the gofoundry.net environment running so users have time to migrate their applications to the new environment. All new accounts will have access to the new environment and you can sign up here for free. Go here to get started!

Read More
Iron Foundry

Have you brought the HAMMA?

If you have contributed to Iron Foundry in any way, let us know. We’ll send you a free exclusive “I BRING THE HAMMA” Iron Foundry t-shirt while supplies last. Using Iron Foundry on a project, providing feedback, blogging about Iron Foundry, or source code improvements are some of the ways that you can contribute. Here are a couple of examples:

Let us know how you are contributing by going to: https://ironfoundry.org/hamma

Check out how to start contributing: http://help.ironfoundry.org/entries/20777076-start-contributing

Read More
Iron Foundry

Open PaaS for Enterprise Devs - A free session at the Cloud Connect Conference

Open PaaS for Enterprise Devs - A free session at the Cloud Connect Conference, Wed Feb 15, Santa Clara Hyatt Room G

This free session at the Cloud Connect conference is for anyone who wants to learn how open PaaS is enabling enterprise developers. It’s also an ideal opportunity for an informal meet-up of anyone in the Cloud Foundry community interested in deploying PaaS behind the firewall.

Cloud Foundry’s James Watters and Jared Wray from the Iron Foundry team at Tier 3 team up to share insights, best practices and how to’s–with good info for both developers and infrastructure architects. You’ll hear an update on Open PaaS services including Cloud Foundry and why now is the right for IT Ops to transform their thinking from VMs to apps and services. You’ll learn why PaaS may be the best bet yet for quickly enabling Devs with access to the latest technologies for a more agile enterprise. And, we’ll share best practices tips and tricks from  real experiences deploying PaaS on a public cloud that can be applied today in your private cloud environment.    Our hands-on PaaS demos will include:

  • How an Open PaaS can free-up enterprise  to support “any” language in their dev environments: We’ll  deploy  a multi-tier application with Node.js, .NET WCF, and PHP or Java as the front end.
  • How to scale and consume services with PaaS:  we’ll show how to leverage PaaS to scale the application layer while enabling custom, consumable enterprise services

Want to join the free session (and stop by to get some good swag on the Expo Floor) Simply register yourself on the Cloud Connect site for a Free Expo Pass (use priority code CPNACC95). If you are interested in joining the whole conference, that code will get you a 25% discount.

See you in Santa Clara!

Read More
Iron Foundry

Iron Foundry Governance and the Community

Governance Model

Today we are sharing more information on the Iron Foundry governance model.

Anybody who believes in enabling the .NET ecosystem into the Cloud Foundry platform and who wants to contribute or help build the community is more than welcome to participate or contribute to Iron Foundry.

While Tier 3 is the lead on the project and will remain a strong active voice, we welcome contributors and sponsors to take an active role In the Iron Foundry project.  This effort will in turn  be recognized:  top contributors of the project and sponsors who are active in the community  will be asked to join the governance team.

How do I get started?

As always the simplest way is to fork the Iron Foundry code on github for simple changes and then issue a pull request to the Iron Foundry team for review. For significant contributions —  as with most open source projects — we do require to sign a Contributors License Agreement (CLA). The CLA is modeled after the Apache Foundation and Cloud Foundry CLAs, which have worked out well with both communities.

 You can read more about this here: http://help.ironfoundry.org/entries/20777076-start-contributing  

Read More
Iron Foundry

Whats next for Iron Foundry? .NET DEA and VMC in the next couple weeks

The launch of Iron Foundry this week was amazing and we want to send a sincere thanks out to the entire community. As things always do in a community process, we’ve received great suggestions, found a few hiccups, and seen some amazing engagement!  

Read More