Oracle Mix A Case Study Ola Bini JRuby Core Developer - - PowerPoint PPT Presentation

oracle mix
SMART_READER_LITE
LIVE PREVIEW

Oracle Mix A Case Study Ola Bini JRuby Core Developer - - PowerPoint PPT Presentation

Oracle Mix A Case Study Ola Bini JRuby Core Developer ThoughtWorks Studios ola.bini@gmail.com http://olabini.com/blog Vanity slide Vanity slide Ola Bini Vanity slide Ola Bini From Stockholm, Sweden Vanity slide Ola Bini From


slide-1
SLIDE 1

Ola Bini

JRuby Core Developer ThoughtWorks Studios

  • la.bini@gmail.com

http://olabini.com/blog

A Case Study

Oracle Mix

slide-2
SLIDE 2

Vanity slide

slide-3
SLIDE 3

Vanity slide

Ola Bini

slide-4
SLIDE 4

Vanity slide

Ola Bini From Stockholm, Sweden

slide-5
SLIDE 5

Vanity slide

Ola Bini From Stockholm, Sweden Programming language nerd

slide-6
SLIDE 6

Vanity slide

Ola Bini From Stockholm, Sweden Programming language nerd ThoughtWorks Studios

slide-7
SLIDE 7

Vanity slide

Ola Bini From Stockholm, Sweden Programming language nerd ThoughtWorks Studios JRuby Core Developer

slide-8
SLIDE 8

30 000 feet

slide-9
SLIDE 9

30 000 feet

Oracle Connect

slide-10
SLIDE 10

30 000 feet

Oracle Connect

Ruby on Rails

slide-11
SLIDE 11

30 000 feet

Oracle Connect

Ruby on Rails

Oracle Mix

slide-12
SLIDE 12

30 000 feet

Oracle Connect

Ruby on Rails

Oracle Mix

JRuby on Rails

slide-13
SLIDE 13

30 000 feet

Oracle Connect

Ruby on Rails

Oracle Mix

JRuby on Rails

Social networking

slide-14
SLIDE 14

30 000 feet

Oracle Connect

Ruby on Rails

Oracle Mix

JRuby on Rails

Social networking Launched for Oracle OpenWorld

slide-15
SLIDE 15

30 000 feet

Oracle Connect

Ruby on Rails

Oracle Mix

JRuby on Rails

Social networking Launched for Oracle OpenWorld Becoming more of a platform for Oracle

slide-16
SLIDE 16

Ruby?

slide-17
SLIDE 17

Ruby?

Dynamically, strongly typed, pure object oriented language

slide-18
SLIDE 18

Ruby?

Dynamically, strongly typed, pure object oriented language

Interpreted

slide-19
SLIDE 19

Ruby?

Dynamically, strongly typed, pure object oriented language

Interpreted Open Source

slide-20
SLIDE 20

Ruby?

Dynamically, strongly typed, pure object oriented language

Interpreted Open Source Default implementation in C (called MRI)

slide-21
SLIDE 21

Ruby?

Dynamically, strongly typed, pure object oriented language

Interpreted Open Source Default implementation in C (called MRI)

Current versions 1.8.7 and 1.9.0

slide-22
SLIDE 22

Ruby?

Dynamically, strongly typed, pure object oriented language

Interpreted Open Source Default implementation in C (called MRI)

Current versions 1.8.7 and 1.9.0 Created in 1993

slide-23
SLIDE 23

Ruby?

Dynamically, strongly typed, pure object oriented language

Interpreted Open Source Default implementation in C (called MRI)

Current versions 1.8.7 and 1.9.0 Created in 1993 The principle of least surprise

slide-24
SLIDE 24

Nice Ruby features

slide-25
SLIDE 25

Nice Ruby features

Pure OO

slide-26
SLIDE 26

Nice Ruby features

Pure OO Blocks

slide-27
SLIDE 27

Nice Ruby features

Pure OO Blocks Modules as mixins

slide-28
SLIDE 28

Nice Ruby features

Pure OO Blocks Modules as mixins Great libraries and frameworks

slide-29
SLIDE 29

Nice Ruby features

Pure OO Blocks Modules as mixins Great libraries and frameworks Pleasant language

slide-30
SLIDE 30

Rails?

slide-31
SLIDE 31

Rails?

Full stack MVC web dev framework

slide-32
SLIDE 32

Rails?

Full stack MVC web dev framework Open Source (MIT)

slide-33
SLIDE 33

Rails?

Full stack MVC web dev framework Open Source (MIT)

Many contributors

slide-34
SLIDE 34

Rails?

Full stack MVC web dev framework Open Source (MIT)

Many contributors

Written in Ruby, utilizing it to max

slide-35
SLIDE 35

Rails?

Full stack MVC web dev framework Open Source (MIT)

Many contributors

Written in Ruby, utilizing it to max Single threaded, shared nothing

slide-36
SLIDE 36

Rails?

Full stack MVC web dev framework Open Source (MIT)

Many contributors

Written in Ruby, utilizing it to max Single threaded, shared nothing Current version 2.1

slide-37
SLIDE 37

Rails tenets

slide-38
SLIDE 38

Rails tenets

Convention over configuration

slide-39
SLIDE 39

Rails tenets

Convention over configuration Don’t Repeat Yourself

slide-40
SLIDE 40

Rails tenets

Convention over configuration Don’t Repeat Yourself Agile development

slide-41
SLIDE 41

Why Rails?

slide-42
SLIDE 42

Why Rails?

Greatly simplified web development

slide-43
SLIDE 43

Why Rails?

Greatly simplified web development Lots of innovation in the community

slide-44
SLIDE 44

Why Rails?

Greatly simplified web development Lots of innovation in the community Small applications are trivial to create

slide-45
SLIDE 45

Why Rails?

Greatly simplified web development Lots of innovation in the community Small applications are trivial to create

slide-46
SLIDE 46

JRuby?

slide-47
SLIDE 47

JRuby?

Java implementation of the Ruby language

slide-48
SLIDE 48

JRuby?

Java implementation of the Ruby language Java 1.5+

slide-49
SLIDE 49

JRuby?

Java implementation of the Ruby language Java 1.5+ Open Source

slide-50
SLIDE 50

JRuby?

Java implementation of the Ruby language Java 1.5+ Open Source “It’s just Ruby”

slide-51
SLIDE 51

JRuby?

Java implementation of the Ruby language Java 1.5+ Open Source “It’s just Ruby” Current release 1.1.4

slide-52
SLIDE 52

JRuby?

Java implementation of the Ruby language Java 1.5+ Open Source “It’s just Ruby” Current release 1.1.4 Commercial backing

slide-53
SLIDE 53

JRuby?

Java implementation of the Ruby language Java 1.5+ Open Source “It’s just Ruby” Current release 1.1.4 Commercial backing

Sun Microsystems

slide-54
SLIDE 54

JRuby?

Java implementation of the Ruby language Java 1.5+ Open Source “It’s just Ruby” Current release 1.1.4 Commercial backing

Sun Microsystems ThoughtWorks

slide-55
SLIDE 55

Why JRuby?

slide-56
SLIDE 56

Why JRuby?

Threading

slide-57
SLIDE 57

Why JRuby?

Threading Unicode

slide-58
SLIDE 58

Why JRuby?

Threading Unicode Performance

slide-59
SLIDE 59

Why JRuby?

Threading Unicode Performance Memory

slide-60
SLIDE 60

Why JRuby?

Threading Unicode Performance Memory C Extensions

slide-61
SLIDE 61

Why JRuby?

Threading Unicode Performance Memory C Extensions Libraries

slide-62
SLIDE 62

Why JRuby?

Threading Unicode Performance Memory C Extensions Libraries Politics

slide-63
SLIDE 63

Why JRuby?

Threading Unicode Performance Memory C Extensions Libraries Politics Legacy systems

slide-64
SLIDE 64

Why JRuby on Rails

slide-65
SLIDE 65

Why JRuby on Rails

Deployment to Java app servers

slide-66
SLIDE 66

Why JRuby on Rails

Deployment to Java app servers Java environments everywhere

slide-67
SLIDE 67

Why JRuby on Rails

Deployment to Java app servers Java environments everywhere Broader, scalable database support

slide-68
SLIDE 68

Why JRuby on Rails

Deployment to Java app servers Java environments everywhere Broader, scalable database support Integration with Java libraries and legacy systems

slide-69
SLIDE 69

Networking in Oracle

slide-70
SLIDE 70

Networking in Oracle

Loads of internal systems

slide-71
SLIDE 71

Networking in Oracle

Loads of internal systems Many employees (84 000)

slide-72
SLIDE 72

Networking in Oracle

Loads of internal systems Many employees (84 000) Information about people in many systems

slide-73
SLIDE 73

Networking in Oracle

Loads of internal systems Many employees (84 000) Information about people in many systems And there is no unified connection mechanism

slide-74
SLIDE 74

Networking in Oracle

Loads of internal systems Many employees (84 000) Information about people in many systems And there is no unified connection mechanism

slide-75
SLIDE 75

Mix Features

slide-76
SLIDE 76

Mix Features

Profiles

slide-77
SLIDE 77

Mix Features

Profiles Networks

slide-78
SLIDE 78

Mix Features

Profiles Networks Ideas

slide-79
SLIDE 79

Mix Features

Profiles Networks Ideas Questions

slide-80
SLIDE 80

Mix Features

Profiles Networks Ideas Questions Groups

slide-81
SLIDE 81

Mix Features

Profiles Networks Ideas Questions Groups

Including blogging, private versions of the other things and chat

slide-82
SLIDE 82

Mix Features

Profiles Networks Ideas Questions Groups

Including blogging, private versions of the other things and chat

Feeds

slide-83
SLIDE 83

Mix Features

Profiles Networks Ideas Questions Groups

Including blogging, private versions of the other things and chat

Feeds Product scoping

slide-84
SLIDE 84

Mix Features

Profiles Networks Ideas Questions Groups

Including blogging, private versions of the other things and chat

Feeds Product scoping Direct messages

slide-85
SLIDE 85

Mix Features

Profiles Networks Ideas Questions Groups

Including blogging, private versions of the other things and chat

Feeds Product scoping Direct messages

slide-86
SLIDE 86

Demo

Oracle Mix in action

slide-87
SLIDE 87

Oracle Connect

slide-88
SLIDE 88

Oracle Connect

Summer 2007

slide-89
SLIDE 89

Oracle Connect

Summer 2007 Internal Oracle app

slide-90
SLIDE 90

Oracle Connect

Summer 2007 Internal Oracle app Started as directory

slide-91
SLIDE 91

Oracle Connect

Summer 2007 Internal Oracle app Started as directory Networking

slide-92
SLIDE 92

Oracle Connect

Summer 2007 Internal Oracle app Started as directory Networking Got 2000 users in 10hrs

slide-93
SLIDE 93

Oracle Connect

Summer 2007 Internal Oracle app Started as directory Networking Got 2000 users in 10hrs

10000 users in 3 days

slide-94
SLIDE 94

Oracle Connect

Summer 2007 Internal Oracle app Started as directory Networking Got 2000 users in 10hrs

10000 users in 3 days

Simple Ruby on Rails application

slide-95
SLIDE 95

Oracle Connect

Summer 2007 Internal Oracle app Started as directory Networking Got 2000 users in 10hrs

10000 users in 3 days

Simple Ruby on Rails application Later added IdeaFactory

slide-96
SLIDE 96

Oracle Connect

Summer 2007 Internal Oracle app Started as directory Networking Got 2000 users in 10hrs

10000 users in 3 days

Simple Ruby on Rails application Later added IdeaFactory June 20, 2008, Connect V2 launched on the Mix platform

slide-97
SLIDE 97

Oracle Mix

slide-98
SLIDE 98

Oracle Mix

Launched 11 Nov, 2007

slide-99
SLIDE 99

Oracle Mix

Launched 11 Nov, 2007 Built in 6 weeks

slide-100
SLIDE 100

Oracle Mix

Launched 11 Nov, 2007 Built in 6 weeks

By Oracle and ThoughtWorks

slide-101
SLIDE 101

Oracle Mix

Launched 11 Nov, 2007 Built in 6 weeks

By Oracle and ThoughtWorks 5 developers

slide-102
SLIDE 102

Oracle Mix

Launched 11 Nov, 2007 Built in 6 weeks

By Oracle and ThoughtWorks 5 developers

At start, no real hardware available, etc

slide-103
SLIDE 103

Oracle Mix

Launched 11 Nov, 2007 Built in 6 weeks

By Oracle and ThoughtWorks 5 developers

At start, no real hardware available, etc Deployed on 4x2 cpu single core, 12 gb mem, small HD

slide-104
SLIDE 104

Oracle Mix

Launched 11 Nov, 2007 Built in 6 weeks

By Oracle and ThoughtWorks 5 developers

At start, no real hardware available, etc Deployed on 4x2 cpu single core, 12 gb mem, small HD

3 app servers, 1 db server, BigIP load balancer

slide-105
SLIDE 105

Oracle Mix

Launched 11 Nov, 2007 Built in 6 weeks

By Oracle and ThoughtWorks 5 developers

At start, no real hardware available, etc Deployed on 4x2 cpu single core, 12 gb mem, small HD

3 app servers, 1 db server, BigIP load balancer

slide-106
SLIDE 106

Future plans

slide-107
SLIDE 107

Future plans

Integration with OpenSocial

slide-108
SLIDE 108

Future plans

Integration with OpenSocial Possibility of using it as a platform, not only for Mix and Connect

slide-109
SLIDE 109

Future plans

Integration with OpenSocial Possibility of using it as a platform, not only for Mix and Connect Clean up search

slide-110
SLIDE 110

Future plans

Integration with OpenSocial Possibility of using it as a platform, not only for Mix and Connect Clean up search Continual development of smaller features

slide-111
SLIDE 111

Technical platform

slide-112
SLIDE 112

Technical platform

JRuby on Rails (Rails 1.2, JRuby trunk, around 1.1RC1)

slide-113
SLIDE 113

Technical platform

JRuby on Rails (Rails 1.2, JRuby trunk, around 1.1RC1)

Initially Rails 1.2, JRuby around 1.1RC1

slide-114
SLIDE 114

Technical platform

JRuby on Rails (Rails 1.2, JRuby trunk, around 1.1RC1)

Initially Rails 1.2, JRuby around 1.1RC1 Now Rails 2.1, JRuby 1.1.3

slide-115
SLIDE 115

Technical platform

JRuby on Rails (Rails 1.2, JRuby trunk, around 1.1RC1)

Initially Rails 1.2, JRuby around 1.1RC1 Now Rails 2.1, JRuby 1.1.3

Oracle Application Server (OC4J)

slide-116
SLIDE 116

Technical platform

JRuby on Rails (Rails 1.2, JRuby trunk, around 1.1RC1)

Initially Rails 1.2, JRuby around 1.1RC1 Now Rails 2.1, JRuby 1.1.3

Oracle Application Server (OC4J) Oracle RDBMS 10g

slide-117
SLIDE 117

Technical platform

JRuby on Rails (Rails 1.2, JRuby trunk, around 1.1RC1)

Initially Rails 1.2, JRuby around 1.1RC1 Now Rails 2.1, JRuby 1.1.3

Oracle Application Server (OC4J) Oracle RDBMS 10g Oracle Internet Directory (LDAP)

slide-118
SLIDE 118

Technical platform

JRuby on Rails (Rails 1.2, JRuby trunk, around 1.1RC1)

Initially Rails 1.2, JRuby around 1.1RC1 Now Rails 2.1, JRuby 1.1.3

Oracle Application Server (OC4J) Oracle RDBMS 10g Oracle Internet Directory (LDAP) Oracle SSO

slide-119
SLIDE 119

Technical platform

JRuby on Rails (Rails 1.2, JRuby trunk, around 1.1RC1)

Initially Rails 1.2, JRuby around 1.1RC1 Now Rails 2.1, JRuby 1.1.3

Oracle Application Server (OC4J) Oracle RDBMS 10g Oracle Internet Directory (LDAP) Oracle SSO Oracle HTTPD

slide-120
SLIDE 120

Technical platform

JRuby on Rails (Rails 1.2, JRuby trunk, around 1.1RC1)

Initially Rails 1.2, JRuby around 1.1RC1 Now Rails 2.1, JRuby 1.1.3

Oracle Application Server (OC4J) Oracle RDBMS 10g Oracle Internet Directory (LDAP) Oracle SSO Oracle HTTPD Oracle Linux

slide-121
SLIDE 121

Benefits of technical platform

slide-122
SLIDE 122

Benefits of technical platform

Quick turnaround

slide-123
SLIDE 123

Benefits of technical platform

Quick turnaround Agile development

slide-124
SLIDE 124

Benefits of technical platform

Quick turnaround Agile development Start to finish took 6 weeks

slide-125
SLIDE 125

Benefits of technical platform

Quick turnaround Agile development Start to finish took 6 weeks Integration with technical stack very easy

slide-126
SLIDE 126

Benefits of technical platform

Quick turnaround Agile development Start to finish took 6 weeks Integration with technical stack very easy

From Java side

slide-127
SLIDE 127

Benefits of technical platform

Quick turnaround Agile development Start to finish took 6 weeks Integration with technical stack very easy

From Java side From Ruby side

slide-128
SLIDE 128

Benefits of technical platform

Quick turnaround Agile development Start to finish took 6 weeks Integration with technical stack very easy

From Java side From Ruby side

slide-129
SLIDE 129

Challenges of technical platform

slide-130
SLIDE 130

Challenges of technical platform

JRuby startup

slide-131
SLIDE 131

Challenges of technical platform

JRuby startup

MRI used for development

slide-132
SLIDE 132

Challenges of technical platform

JRuby startup

MRI used for development

Lack of Oracle RDBMS on Mac

slide-133
SLIDE 133

Challenges of technical platform

JRuby startup

MRI used for development

Lack of Oracle RDBMS on Mac

Used Parallels

slide-134
SLIDE 134

Challenges of technical platform

JRuby startup

MRI used for development

Lack of Oracle RDBMS on Mac

Used Parallels

Oracle SSO support

slide-135
SLIDE 135

Challenges of technical platform

JRuby startup

MRI used for development

Lack of Oracle RDBMS on Mac

Used Parallels

Oracle SSO support

Tweaked acts_as_authenticated to get it working

slide-136
SLIDE 136

Challenges of technical platform

JRuby startup

MRI used for development

Lack of Oracle RDBMS on Mac

Used Parallels

Oracle SSO support

Tweaked acts_as_authenticated to get it working

Initially performance problems

slide-137
SLIDE 137

Challenges of technical platform

JRuby startup

MRI used for development

Lack of Oracle RDBMS on Mac

Used Parallels

Oracle SSO support

Tweaked acts_as_authenticated to get it working

Initially performance problems

Found some bugs in JRuby, including memory leaks

slide-138
SLIDE 138

Challenges of technical platform

JRuby startup

MRI used for development

Lack of Oracle RDBMS on Mac

Used Parallels

Oracle SSO support

Tweaked acts_as_authenticated to get it working

Initially performance problems

Found some bugs in JRuby, including memory leaks

Deviation in Servlet implementation

slide-139
SLIDE 139

Statistics

slide-140
SLIDE 140

Statistics

Initial: Code LOC: 2887, Test LOC: 3691

slide-141
SLIDE 141

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

slide-142
SLIDE 142

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

slide-143
SLIDE 143

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

After 6 weeks

slide-144
SLIDE 144

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

After 6 weeks

4400 registered, over 150 ideas, 200 groups

slide-145
SLIDE 145

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

After 6 weeks

4400 registered, over 150 ideas, 200 groups

After 4 months (March 08)

slide-146
SLIDE 146

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

After 6 weeks

4400 registered, over 150 ideas, 200 groups

After 4 months (March 08)

7000 people, 35% employees, 286 groups, 600 ideas, 168 questions

slide-147
SLIDE 147

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

After 6 weeks

4400 registered, over 150 ideas, 200 groups

After 4 months (March 08)

7000 people, 35% employees, 286 groups, 600 ideas, 168 questions

After 7 months (June 08)

slide-148
SLIDE 148

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

After 6 weeks

4400 registered, over 150 ideas, 200 groups

After 4 months (March 08)

7000 people, 35% employees, 286 groups, 600 ideas, 168 questions

After 7 months (June 08)

17000 people, 5500 employees, 460 groups, 1081 ideas

slide-149
SLIDE 149

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

After 6 weeks

4400 registered, over 150 ideas, 200 groups

After 4 months (March 08)

7000 people, 35% employees, 286 groups, 600 ideas, 168 questions

After 7 months (June 08)

17000 people, 5500 employees, 460 groups, 1081 ideas

After 10 months (September 08):

slide-150
SLIDE 150

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

After 6 weeks

4400 registered, over 150 ideas, 200 groups

After 4 months (March 08)

7000 people, 35% employees, 286 groups, 600 ideas, 168 questions

After 7 months (June 08)

17000 people, 5500 employees, 460 groups, 1081 ideas

After 10 months (September 08):

31000 people, 10000 employees, about 600 groups

slide-151
SLIDE 151

Statistics

Initial: Code LOC: 2887, Test LOC: 3691 After 3 weeks

3000 registered people, 40% employees

After 6 weeks

4400 registered, over 150 ideas, 200 groups

After 4 months (March 08)

7000 people, 35% employees, 286 groups, 600 ideas, 168 questions

After 7 months (June 08)

17000 people, 5500 employees, 460 groups, 1081 ideas

After 10 months (September 08):

31000 people, 10000 employees, about 600 groups

slide-152
SLIDE 152

OpenSocial

slide-153
SLIDE 153

OpenSocial

API for social networking applications

slide-154
SLIDE 154

OpenSocial

API for social networking applications Developed by Google and MySpace + others

slide-155
SLIDE 155

OpenSocial

API for social networking applications Developed by Google and MySpace + others Implementing the API’s make it possible to integrate with other implementing sites

slide-156
SLIDE 156

OpenSocial

API for social networking applications Developed by Google and MySpace + others Implementing the API’s make it possible to integrate with other implementing sites Connect V2 add support for OpenSocial, and experimental applications have been added

slide-157
SLIDE 157

OpenSocial

API for social networking applications Developed by Google and MySpace + others Implementing the API’s make it possible to integrate with other implementing sites Connect V2 add support for OpenSocial, and experimental applications have been added Mix will add public OpenSocial support at some point

slide-158
SLIDE 158

OpenSocial

API for social networking applications Developed by Google and MySpace + others Implementing the API’s make it possible to integrate with other implementing sites Connect V2 add support for OpenSocial, and experimental applications have been added Mix will add public OpenSocial support at some point

slide-159
SLIDE 159

Oracle Listens

slide-160
SLIDE 160

Oracle Listens

Publicity event

slide-161
SLIDE 161

Oracle Listens

Publicity event Oracle.com replaced for limited time

slide-162
SLIDE 162

Oracle Listens

Publicity event Oracle.com replaced for limited time Submit ideas and suggestions from front page

slide-163
SLIDE 163

Oracle Listens

Publicity event Oracle.com replaced for limited time Submit ideas and suggestions from front page Oracle executives part of it

slide-164
SLIDE 164

Oracle Listens

Publicity event Oracle.com replaced for limited time Submit ideas and suggestions from front page Oracle executives part of it

Responding quickly to ideas and feedback

slide-165
SLIDE 165

Oracle Listens

Publicity event Oracle.com replaced for limited time Submit ideas and suggestions from front page Oracle executives part of it

Responding quickly to ideas and feedback

slide-166
SLIDE 166

A Q and