A week after going live with Oracle Mix, we’ve gotten a considerable amount of buzz and interest from every aspect of Mix. Most everyone we’ve talked with are really happy to see Oracle becoming more transparent. Mix is a huge part of that. There are a lot of tool heads out there who are really interested in how we made it happen. So, here it is… the story of how Mix was conceived and built.
Those who have kept up with this blog, know about the internal social network we created inside the walls of Oracle; we call that Connect. For those who don’t know anything about Connect, it’s basically a skunk works project that became really popular — you can read more about it here. Connect’s success has opened the minds of many people within Oracle. Many people know the potential of the community and network effects that we’re seeing with the large social networks, but it really hasn’t been applied to enterprise communities yet. Several people at Oracle recognized this and so about 6 weeks leading up to Open World, the Mix project was approved by a few senior Oracle execs and hence was born. Paul, kicked it off and told us we had 6 weeks to have a working application by Open World. I almost had a conniption at that point. Connect took about 6 weeks for me to build (by myself), but to build a web application that had more features, be publicly facing, and had to run on a tech stack (our own) that we had no idea would work well, was just crazy. We didn’t have hardware, data center space, and had a ton of Oracle security, legal and other hurdles to work through — not including development resources. I knew at that point that we needed help to pull it together. Luckily, I knew about people like Ola Bini and ThoughtWorks. I knew that they were doing lots of work around JRuby, and I knew that they practice preach agile development practices. So, we met immediately. It was a perfect match.
The team was comprised of four developers from TW (Ola Bini, Alexey Verkhovsky, Toby Tripp, and Matt Wastrodowski) and me from the Oracle side. We also had a project manager (Mike Royle) who whipped us into shape at the end of every iteration. We started coding about 3.5 to 4 weeks before Open World. At that point, we still didn’t have hardware and there were a ton of unknowns surrounding JRuby running on the Oracle AppServer (and if it did, what performance would be like). We bit the bullet and went for it. Rails was an essential ingredient to this project. I don’t know of other frameworks that would have enabled us to build this particular application so rapidly. The beauty of Rails is the plugin system. We leveraged a whole slew of plugins that made tagging, comments, ratings, paginations, search, authentication, and other common features a simple feature to implement and manage.
We built most of Mix using the standard Ruby interpreter (aka, MRI — Matz’ Ruby Interpreter) on Oracle DB XE using Ruby-OCI. Developing Rails apps is still much easier using MRI because JRuby takes a while to startup. While developing on the Oracle DB, we encountered several issues with the Ruby-OCI adapter (the Ruby-OCI adapter is in need of some official Oracle support… more on that later). While most of the team was using MRI/OCI, I was working on getting hardware and configuring what we had. Once we finally got hardware (4 x 2 cpu-single-core, 12 gb mem, small HDs — yeah… crappy hardware that was on its way to being decommissioned), I spent several days working with the sys admins to get one box set up with Oracle DB 10g (I would have gone with 11g, but the DBAs who were going to support us weren’t up to speed on the configuration of 11g yet) and the other 3 boxes with Oracle Application Server 10g. The 3 app servers were configured to be load balanced by a BigIP layer 7 based load balancer. I set up jRuby and the necessary pieces to allow us to deploy easily on Oracle App Server… namely installing admin_client.jar, which is a CLI for managing the Oracle App Server.
One critical part of the project was to support Oracle’s SSO policy. Meaning every web app that we deploy has to support SSO using the Oracle SSO service. It took me a few days to figure out how all this worked but once we did, it wasn’t difficult to plug it into the acts_as_authenticated Rails plugin that we were using. If anyone is looking to do something like this, leave a comment and I’ll send you the code — maybe I’ll release it as an acts_as_authenticated_through_oracle_sso plugin if there are enough people doing this sort of thing.
After I had the boxes primed, we started doing early deploys on JRuby. The performance was terrible. About 20-40 reqs/sec on a single app server. Turns out that I didn’t have some of the production settings configured properly (i.e., not caching ruby classes, etc.) Once I modified a few environment settings (standard rails prod settings), I got about 80 reqs/sec on a single app server… better but not enough. At the same time, Ola and the JRuby team found some interesting bottlenecks in the JRuby code. Within in a day or two, Ola and team had them patched up and we were beginning to see around 150-200 reqs/sec. After the app server warmed up, things got real interesting… the numbers went way up (400-600 reqs/sec). *Disclaimer: I’m not a performance guru. I did most of my tests using Apache Bench running against the logged in home page of Mix, which btw, doesn’t use any fragment caching at all (actually, Mix is not making use of any caching right now — we’ll get to it eventually, but it doesn’t seem like we need it yet).
The 3.5 to 4 weeks leading up to Open World was nuts. I spent a ton of time taking care of deployment/hardware issues rather than coding. The rest of the team worked remotely (Toby and Matt in Chicago, Alexey in Calgary, Ola in London) which is sort of against the agile mantra, but it was done to cut cost. We communicated through Skype’s bookmarked chat feature which is an excellent tool if you need to work as an agile team remotely. The week before Open World, Toby, Matt and I rendezvoused in San Francisco and knocked out a ton of functionality. Even though we had a productive week leading up to Open World, we knew that the app would still need a lot of polish past go-live, but it’s amazing how much a small team working mostly remotely could accomplish in that short period of time.
This was an amazing project to be a part of. And one thing I’ll say is that for anyone working in a Java EE environment where you have to use the stack that’s there, the future is bright and it’s all because of JRuby, Rails, and the speed and agility at which you can build applications on that framework. I’m convinced that JRuby is the best way to deploy a Rails app if you need performance and flexibility. My prediction: next year will be the year for JRuby’s rise into the mainstream.
Potentially Similar Posts
- Let’s Mix
- Mix Listed on Ruby on Rails.org
- Mix Gets a Plug at Google
- Mix President’s Day Release: JRuby 1.1RC2 and a bunch of other stuff!
- JRuby Meetup!
Add New Comment
Viewing 11 Comments
Thanks. Your comment is awaiting approval by a moderator.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Do you already have an account? Log in and claim this comment.
Add New Comment
Trackbacks
(Trackback URL)
22 November 2007 at 3:11 am
[...] points posted 17 hours ago by glaster1 comment431.Oracle Mix, jRuby on Rails, Small Teams, Agile, and it’s Effects on the World [programming] (oracleappslab.com)posted 1 hour ago by gst3 [...]
22 November 2007 at 3:59 am
We communicated through Skype’s bookmarked chat feature which is an excellent tool if you need to work as an agile ...
22 November 2007 at 5:43 am
postedMix, jRuby on Rails, Small Teams, Agile, and it’s Effects on the Worldon Oracle AppsLab
22 November 2007 at 7:15 am
[...] Rich Manalang just posted a very nice entry on the Oracle AppsLab about the technology behind Oracle Mix, how ...
22 November 2007 at 10:17 am
[...] Oracle Labs recently released Oracle Mix, a JRuby on Rails based social networking application. Rich Manalang now posted ...
22 November 2007 at 11:19 am
[...] gst via oracleappslab.com Submitted: Nov 22 / 04:19 Mix, jRuby on Rails, ...
23 November 2007 at 4:21 am
[...] Oracle AppsLab » Mix, jRuby on Rails, Small Teams, Agile, and it’s Effects on the World [...]
23 November 2007 at 9:01 am
[...] Headius by Charles Oliver Nutter has a quote from Rich Manalang from Oracle AppsLab with this to say about ...
23 November 2007 at 9:02 am
[...] byhotnewtopoldother communitiesreddit.comsciencepoliticsbusinessgadgetssportsgamingentertainmentOracle Mix, jRuby on Rails, Small Teams, Agile, and it’s Effects on the World (oracleappslab.com)0 points posted 1 day ago by gst5 [...]
23 November 2007 at 9:11 am
[...] posts that usually end up evenly divided between "yea" and "nay". But this time, I've got Rich Manalang's post ...
23 November 2007 at 9:48 am
Oracle已经尝试了。Oracle Mix是一个社会网络站点,也是第一个大型的JRuby on Rails的应用。效率?效率真的不错。Oracle的同志说,Mix每秒能处理400~600个请求。比较不理想的是内存使用情况,这里有一个已知的问题存在。不过在Oracle那样的强大服务器上,这个已经不成问题,于是也没有人去动它。
23 November 2007 at 10:42 am
I have a tendency to post intentionally inflammatory posts that usually end up evenly divided between "yea" and "nay". But ...
23 November 2007 at 6:31 pm
[...] stumbled across more detail from Rich Manalang regarding the Oracle Mix deployment on JRuby and the Oracle Application Server. ...
24 November 2007 at 12:00 am
[...] Oracle AppsLab » Mix, jRuby on Rails, Small Teams, Agile, and it’s Effects on the World [...]
24 November 2007 at 10:01 am
[...] - Mix, JRuby on Rails, Small Teams, Agile, and it’s Effects on the World [...]
25 November 2007 at 9:44 am
[...] vai o relato do Rich [...]
25 November 2007 at 12:21 pm
Notes from the Trenches on Agile Development with JRuby (in Oracle) In this interesting post Rich Manalang describes the ...
26 November 2007 at 6:18 am
[...] http://oracleappslab.com/2007/11/21/mix-jruby-on-rails-small-teams-agile-and-its-effects-on-the-worl... [...]
27 November 2007 at 11:21 am
[...] Vale a pena ler, demais esse projeto!http://oracleappslab.com/2007/11/21/mix-jruby-on-rails-small-teams-agile-and-its-effects-on-the-worl... [...]
28 November 2007 at 12:07 am
Right before Open World 2007, the Oracle Apps Lab team put together a clever skunk works project, thanks to the ...
28 November 2007 at 12:07 am
Right before Open World 2007, the Oracle Apps Lab team put together a clever skunk works project, thanks to the ...
28 November 2007 at 4:44 pm
Getting Things Done with Above & Beyond IBM个人电脑事业部员工回忆录 谁制造了"iPhone"手机?Mix, JRuby on Rails, Small Teams, Agile, and it’s Effects on the ...
3 December 2007 at 6:12 pm
Check This Out!While looking through the blogosphere we stumbled on an interesting post today. Here’s a quick excerpt: ...
8 December 2007 at 1:45 am
, and although I am not exactly sure what it does, it does seem that the same experience that happens ...
9 December 2007 at 8:35 pm
JRuby on Rails
10 December 2007 at 1:01 am
[...] Mix, jRuby on Rails, Small Teams, Agile, and it’s Effects on the World... admins to get one box set ...
19 December 2007 at 11:16 pm
[...] Oracle实验室最近发布了Oracle Mix,这是一个基于JRuby on Rails的社会网络应用。Rich Manalang刚刚在博客上分享了他在这个项目中的经验。虽然这个项目目前运行在JRuby上,但是最原始的工作却是用MRI完成的: [...]
4 January 2008 at 1:15 pm
[...] you can run with JRuby. The success of this effort can be observed with Ruby on Rails applications now ...
22 January 2008 at 12:56 pm
[...] - 11-23 9:59bd7lx 楼主 深圳http://www.infoq.com/news/2007/11/oracle-mix-jruby-experiences http://oracleappslab.com/2007/11/21/mix-jruby-on-rails-small-teams-agile-and-its-effects-on-the-worl...看完之后有话想说?那就帮楼主加盖一层吧! [...]
29 January 2008 at 11:31 am
[...] using JRuby on Rails. It’s another successful deployment of JRuby after Oracle Mix (see implementation details). Our development environment ...
5 February 2008 at 10:38 am
[...] an article about Oracle Mix. Surprisingly for a enterprise company, it was build on Ruby and runs on [...]
20 February 2008 at 1:28 pm
[...] chun wrote:Quanto a linguagem de scripting... me refiro por ser 100% interpretada... e isso conta sim... imagina q vou ...
25 February 2008 at 11:21 am
[...] chun wrote:Quanto a linguagem de scripting... me refiro por ser 100% interpretada... e isso conta sim... imagina q vou ...
8 April 2008 at 6:28 pm
[...] we wanted to run Rails applications on the Java platform in the future (which is possible now, see http://oracleappslab.com/2007/11/21/mix-jruby-on-rails-small-teams-agile-and-its-effects-on-the-worl...). ...