production deployment considerations..

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
14 messages Options
Reply | Threaded
Open this post in threaded view
|

production deployment considerations..

sergio_101
hey, guys..

i have gemstone working on my local machine, and i am going to start
by developing a simple application..

while i am doing this, i want to make sure i can deploy to production safely..

are there any documents on what i need to do to deploy safely?

how many apps can i run from one gem server?

i am expecting to build pretty small (simple) apps with a fair amount
of traffic.

thanks!

--
----
peace,
sergio
photographer, journalist, visionary

http://www.ThoseOptimizeGuys.com
http://www.CodingForHire.com
http://www.coffee-black.com
http://www.painlessfrugality.com
http://www.twitter.com/sergio_101
http://www.facebook.com/sergio101
Reply | Threaded
Open this post in threaded view
|

Re: production deployment considerations..

Johan Brichau-2

On 06 Sep 2012, at 19:06, sergio_101 wrote:

> i have gemstone working on my local machine, and i am going to start
> by developing a simple application..

Welcome! ;-)

> while i am doing this, i want to make sure i can deploy to production safely..
> are there any documents on what i need to do to deploy safely?

"safely" is quite a broad term but, you probably want to:
- use metacello to load your application
- use FastCGI behind nginx/apache/... or any other webserver you are comfortable with

Maybe you could detail on your specific concerns regarding deployment?

> how many apps can i run from one gem server?

Standard GLASS setups have 3 gems (aka vms) to serve requests for a single stone (aka smalltalk image/db).
You can run many apps from a single stone if you are comfortable that all data of the different apps resides in a single database.

We run multiple stones on a single server, without problems. You just need to know about the limitation of the free license that ties all gemstone processes to the first 2 cores of the machine.

> i am expecting to build pretty small (simple) apps with a fair amount
> of traffic.

There really is no generic answer to this question. Not for Seaside/Gemstone, not for any technology.
It all depends on the application itself and the only way to find out is test, test, test.

That being said, there are a number of things to expect from GLASS:

- the free web edition has some limits, one of which is a maximum of 2 cpu cores. This will impact the number of the requests your app can serve. Depending on your app and traffic, you might or might not hit the limit. But know that you can already go a long way with only 2 cores.
- Dale has quite some interesting blog articles on performance: http://gemstonesoup.wordpress.com/category/scalability/
- Gemstone is a performant database but, once you start having a lot of data, indexes and clustering will be of interest (see manual).

Johan
Reply | Threaded
Open this post in threaded view
|

Re: production deployment considerations..

sergio_101
> Maybe you could detail on your specific concerns regarding deployment?
>

my biggest concern is, i am not sure where to button everything up.. i
don't know what needs to be switch ed to 'production' mode.. i don't
know where passwords need to be set.. i understand all this part on
the seaside end.. just not the gemstone end..

> You can run many apps from a single stone if you are comfortable that all data of the different apps resides in a single database.
>

i am guessing this app will sprout out a sibling app, and it would be
great if they had access to the same data.. quickly..

 - the free web edition has some limits, one of which is a maximum of
2 cpu cores. This will impact the number of the requests your app can
serve. Depending on your app and traffic, you might or might not hit
the limit. But know that you can already go a long way with only 2
cores.

i figure if it gets to the point where i have outgrown the free app, i
will probably have enough business to cover that as a cost of doing
business..

thanks, johan!


--
----
peace,
sergio
photographer, journalist, visionary

http://www.ThoseOptimizeGuys.com
http://www.CodingForHire.com
http://www.coffee-black.com
http://www.painlessfrugality.com
http://www.twitter.com/sergio_101
http://www.facebook.com/sergio101
Reply | Threaded
Open this post in threaded view
|

Re: production deployment considerations..

NorbertHartl

Am 09.09.2012 um 18:54 schrieb sergio_101 <[hidden email]>:

>> Maybe you could detail on your specific concerns regarding deployment?
>>
>
> my biggest concern is, i am not sure where to button everything up.. i
> don't know what needs to be switch ed to 'production' mode.. i don't
> know where passwords need to be set.. i understand all this part on
> the seaside end.. just not the gemstone end..

If you can live with what is provided: three running gems, one gemstone then you don't need to think a lot. The longer you work with it the better you will manage the gemstone part.
The best thing to do is to protect your machine as a whole. If it is a virtualized environment then it is often the default case. For dedicated machines a firewall that blocks everything except port 80 will do. From then on you might leave gemstone just as it is. I still use the default username and password because I know it is not easy to get access to the machine. And if someone gets access to the machine I'm lost anyway. The gemstone username and password need to be stored in a file on disc in order to start it up automatically.

>> You can run many apps from a single stone if you are comfortable that all data of the different apps resides in a single database.
>>
>
> i am guessing this app will sprout out a sibling app, and it would be
> great if they had access to the same data.. quickly..
>
> - the free web edition has some limits, one of which is a maximum of
> 2 cpu cores. This will impact the number of the requests your app can
> serve. Depending on your app and traffic, you might or might not hit
> the limit. But know that you can already go a long way with only 2
> cores.
>
> i figure if it gets to the point where i have outgrown the free app, i
> will probably have enough business to cover that as a cost of doing
> business..
>
A perfect match for the gemstone business model AFAIK.

Norbert

Reply | Threaded
Open this post in threaded view
|

Re: production deployment considerations..

sergio_101
> If you can live with what is provided: three running gems, one gemstone then you don't need to think a lot. The longer you work with it the better you will manage the gemstone part.

i think i am just going to have to run with this, and see how it works..

thanks!

--
----
peace,
sergio
photographer, journalist, visionary

http://www.ThoseOptimizeGuys.com
http://www.CodingForHire.com
http://www.coffee-black.com
http://www.painlessfrugality.com
http://www.twitter.com/sergio_101
http://www.facebook.com/sergio101
Reply | Threaded
Open this post in threaded view
|

Re: production deployment considerations..

Dale Henrichs
In reply to this post by sergio_101
Sergio,

The basic intent of GLASS is to maintain a compatibility layer that allows you to run your code on Pharo and GemStone with a few changes as necessary ... if you stay in the "middle of the road" and avoid the bleeding edge of the APIs, then you can pretty much avoid compatibility issues...

If you look at a GLASS 1.0-beta.8.7.2 image, you will see that ConfigurationOfGsSqueakCommon is preloaded in the image.. The packages in this configuration is an attempt to fill out the code that is common between Squeak and Pharo ... the idea of these packages is to add to them on an as needed basis ...

There is a ConfigurationOfGsPharo configuration in the GemSTone MetacelloRepository[2] that is not pre-loaded that manages a handful of Pharo-specific extension methods that have turned out to be needed over time.

There is also a ConfigurationOfMockGemStone in the MockGemStone repository[3], that manages a set of packages that contain a GemStone compatibility layer for Pharo ... there is no attempt to duplicate functionality in this layer as much as provide "close enough" functionality to allow you to make it easier to use some of the  GemStone-specific classes in Pharo, making your code mangement issues a little easier.

I invite contributions to these packages, but a bug report[1] is perfectly acceptable.

Dale

[1] http://code.google.com/p/glassdb/issues/list
[2] http://seaside.gemstone.com/ss/MetacelloRepository
[3] http://seaside.gemstone.com/ss/MockGemStone.html
----- Original Message -----
| From: "sergio_101" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Thursday, September 6, 2012 10:06:43 AM
| Subject: [GS/SS Beta] production deployment considerations..
|
| hey, guys..
|
| i have gemstone working on my local machine, and i am going to start
| by developing a simple application..
|
| while i am doing this, i want to make sure i can deploy to production
| safely..
|
| are there any documents on what i need to do to deploy safely?
|
| how many apps can i run from one gem server?
|
| i am expecting to build pretty small (simple) apps with a fair amount
| of traffic.
|
| thanks!
|
| --
| ----
| peace,
| sergio
| photographer, journalist, visionary
|
| http://www.ThoseOptimizeGuys.com
| http://www.CodingForHire.com
| http://www.coffee-black.com
| http://www.painlessfrugality.com
| http://www.twitter.com/sergio_101
| http://www.facebook.com/sergio101
|
Reply | Threaded
Open this post in threaded view
|

Ruby/Gemstone Question

Larry Kellogg
Hello,
  So, I'm wondering if I could make use of some Ruby libraries such as the Amazon Web Services interface and communicate with it directly from my Smalltalk objects in GLASS, with MagLev. Is this possible?

  Regards, 

  Larry
Reply | Threaded
Open this post in threaded view
|

Re: Ruby/Gemstone Question

Dale Henrichs
Larry,

I do think that there is a way to do this from MagLev. We (and the folks from HPI) are in the process of getting MagLev running against 3.1.0.1 ... The version of MagLev that is currently available was based on a pre-release of 3.0, so you probably want to wait for the 3.1.0.1 version.

For working with MagLev, I'd suggest that you get on the MagLev mailing list[1] and ask your questions there... I'm just not that familiar with Ruby:)

While it's always been technically feasible to run a Seaside app on top of MagLev, I don't think that anyone has actually done that so there might be a couple hiccups along the way ... I do monitor the MagLev mailing list, so if you you're game we can get the discussion rolling over there:)

BTW, the released version of MagLev (pre-3.0) will be perfectly usable for getting started down this path.

Dale

[1] https://groups.google.com/group/maglev-discussion

----- Original Message -----
| From: "Lawrence Kellogg" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Thursday, September 20, 2012 8:02:52 AM
| Subject: [GS/SS Beta]  Ruby/Gemstone Question
|
| Hello,
| So, I'm wondering if I could make use of some Ruby libraries such as
| the Amazon Web Services interface and communicate with it directly
| from my Smalltalk objects in GLASS, with MagLev. Is this possible?
|
|
| Regards,
|
|
| Larry
Reply | Threaded
Open this post in threaded view
|

Re: Ruby/Gemstone Question

Monty Williams-3
Just a note ...

You should start with the MagLev installation, not the GLASS installation. We've run Seaside under MagLev, but I believe running MagLev using a GLASS extent has problems.
Make sure you use the correct NetLdi port with MagLev - 50378 is the MagLev default.

-- Monty

----- Original Message -----
From: "Dale Henrichs" <[hidden email]>
To: "GemStone Seaside beta discussion" <[hidden email]>
Sent: Thursday, September 20, 2012 8:22:12 AM
Subject: Re: [GS/SS Beta] Ruby/Gemstone Question

Larry,

I do think that there is a way to do this from MagLev. We (and the folks from HPI) are in the process of getting MagLev running against 3.1.0.1 ... The version of MagLev that is currently available was based on a pre-release of 3.0, so you probably want to wait for the 3.1.0.1 version.

For working with MagLev, I'd suggest that you get on the MagLev mailing list[1] and ask your questions there... I'm just not that familiar with Ruby:)

While it's always been technically feasible to run a Seaside app on top of MagLev, I don't think that anyone has actually done that so there might be a couple hiccups along the way ... I do monitor the MagLev mailing list, so if you you're game we can get the discussion rolling over there:)

BTW, the released version of MagLev (pre-3.0) will be perfectly usable for getting started down this path.

Dale

[1] https://groups.google.com/group/maglev-discussion

----- Original Message -----
| From: "Lawrence Kellogg" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Thursday, September 20, 2012 8:02:52 AM
| Subject: [GS/SS Beta]  Ruby/Gemstone Question
|
| Hello,
| So, I'm wondering if I could make use of some Ruby libraries such as
| the Amazon Web Services interface and communicate with it directly
| from my Smalltalk objects in GLASS, with MagLev. Is this possible?
|
|
| Regards,
|
|
| Larry
Reply | Threaded
Open this post in threaded view
|

Re: Ruby/Gemstone Question

Larry Kellogg
Thanks Monty and Dale. I put in a request to join the MagLev group. I still don't quite understand if my existing Smalltalk Seaside code can co-exist with and communicate with Ruby. 

Larry


On Sep 20, 2012, at 11:33 AM, Monty Williams wrote:

Just a note ...

You should start with the MagLev installation, not the GLASS installation. We've run Seaside under MagLev, but I believe running MagLev using a GLASS extent has problems.
Make sure you use the correct NetLdi port with MagLev - 50378 is the MagLev default.

-- Monty

Reply | Threaded
Open this post in threaded view
|

Re: Ruby/Gemstone Question

Monty Williams-3
Yes, your existing Smalltalk Seaside code can co-exist and communicate with Ruby. There have been talks on how to do this at a couple of conferences, but I don't think we ever fleshed out the instructions. 

Perhaps someone on this list or the MagLev list has a pointer to some practical experiences.

-- Monty


From: "Lawrence Kellogg" <[hidden email]>
To: "GemStone Seaside beta discussion" <[hidden email]>
Sent: Thursday, September 20, 2012 8:58:20 AM
Subject: Re: [GS/SS Beta] Ruby/Gemstone Question

Thanks Monty and Dale. I put in a request to join the MagLev group. I still don't quite understand if my existing Smalltalk Seaside code can co-exist with and communicate with Ruby. 

Larry


On Sep 20, 2012, at 11:33 AM, Monty Williams wrote:

Just a note ...

You should start with the MagLev installation, not the GLASS installation. We've run Seaside under MagLev, but I believe running MagLev using a GLASS extent has problems.
Make sure you use the correct NetLdi port with MagLev - 50378 is the MagLev default.

-- Monty


Reply | Threaded
Open this post in threaded view
|

Re: Ruby/Gemstone Question

Larry Kellogg
In reply to this post by Dale Henrichs
I think the answer to my question is yes...

>From the Maglev list:
"3. To the VM, it's the same objects, and many Ruby classes in fact
inherit from or are just the same classes Smalltalk uses. So yes, they
co-exist, and you can call one language from the other and even use
Rubygems in your Smalltalk code"

Sent from my iPhone

On Sep 20, 2012, at 11:22 AM, Dale Henrichs <[hidden email]> wrote:

> Larry,
>
> I do think that there is a way to do this from MagLev. We (and the folks from HPI) are in the process of getting MagLev running against 3.1.0.1 ... The version of MagLev that is currently available was based on a pre-release of 3.0, so you probably want to wait for the 3.1.0.1 version.
>
> For working with MagLev, I'd suggest that you get on the MagLev mailing list[1] and ask your questions there... I'm just not that familiar with Ruby:)
>
> While it's always been technically feasible to run a Seaside app on top of MagLev, I don't think that anyone has actually done that so there might be a couple hiccups along the way ... I do monitor the MagLev mailing list, so if you you're game we can get the discussion rolling over there:)
>
> BTW, the released version of MagLev (pre-3.0) will be perfectly usable for getting started down this path.
>
> Dale
>
> [1] https://groups.google.com/group/maglev-discussion
>
> ----- Original Message -----
> | From: "Lawrence Kellogg" <[hidden email]>
> | To: "GemStone Seaside beta discussion" <[hidden email]>
> | Sent: Thursday, September 20, 2012 8:02:52 AM
> | Subject: [GS/SS Beta]  Ruby/Gemstone Question
> |
> | Hello,
> | So, I'm wondering if I could make use of some Ruby libraries such as
> | the Amazon Web Services interface and communicate with it directly
> | from my Smalltalk objects in GLASS, with MagLev. Is this possible?
> |
> |
> | Regards,
> |
> |
> | Larry
Reply | Threaded
Open this post in threaded view
|

Re: Ruby/Gemstone Question

Dale Henrichs
Larry,

All of that is true, however, I don't think anyone has successfully run a Seaside app on MagLev with things setup to call Ruby from Smalltalk.

I seem to recall that Pat Maddox tried running Seaside over a year ago and hit an issue or two, but the issues may have had more to do with Seaside running on 3.0 than trying to run Seaside in MagLev....

With that said, I think that it should be possible to run a Seaside app on MagLev and leverage the Ruby libraries, I just imagine that we'll have to work through a handful of bugs first:)

Dale

----- Original Message -----
| From: "Lawrence Kellogg" <[hidden email]>
| To: "GemStone Seaside beta discussion" <[hidden email]>
| Sent: Thursday, September 20, 2012 10:14:52 AM
| Subject: Re: [GS/SS Beta] Ruby/Gemstone Question
|
| I think the answer to my question is yes...
|
| >From the Maglev list:
| "3. To the VM, it's the same objects, and many Ruby classes in fact
| inherit from or are just the same classes Smalltalk uses. So yes,
| they
| co-exist, and you can call one language from the other and even use
| Rubygems in your Smalltalk code"
|
| Sent from my iPhone
|
| On Sep 20, 2012, at 11:22 AM, Dale Henrichs <[hidden email]>
| wrote:
|
| > Larry,
| >
| > I do think that there is a way to do this from MagLev. We (and the
| > folks from HPI) are in the process of getting MagLev running
| > against 3.1.0.1 ... The version of MagLev that is currently
| > available was based on a pre-release of 3.0, so you probably want
| > to wait for the 3.1.0.1 version.
| >
| > For working with MagLev, I'd suggest that you get on the MagLev
| > mailing list[1] and ask your questions there... I'm just not that
| > familiar with Ruby:)
| >
| > While it's always been technically feasible to run a Seaside app on
| > top of MagLev, I don't think that anyone has actually done that so
| > there might be a couple hiccups along the way ... I do monitor the
| > MagLev mailing list, so if you you're game we can get the
| > discussion rolling over there:)
| >
| > BTW, the released version of MagLev (pre-3.0) will be perfectly
| > usable for getting started down this path.
| >
| > Dale
| >
| > [1] https://groups.google.com/group/maglev-discussion
| >
| > ----- Original Message -----
| > | From: "Lawrence Kellogg" <[hidden email]>
| > | To: "GemStone Seaside beta discussion"
| > | <[hidden email]>
| > | Sent: Thursday, September 20, 2012 8:02:52 AM
| > | Subject: [GS/SS Beta]  Ruby/Gemstone Question
| > |
| > | Hello,
| > | So, I'm wondering if I could make use of some Ruby libraries such
| > | as
| > | the Amazon Web Services interface and communicate with it
| > | directly
| > | from my Smalltalk objects in GLASS, with MagLev. Is this
| > | possible?
| > |
| > |
| > | Regards,
| > |
| > |
| > | Larry
|
Reply | Threaded
Open this post in threaded view
|

Re: Ruby/Gemstone Question

Monty Williams-3
In reply to this post by Monty Williams-3
Here are a couple of references:

Martin McClure's ESUG talk on calling Ruby from Smalltalk
http://www.esug.org/wiki/pier/Conferences/2011/Schedule-And-Talks/Call-Ruby

Rake scripts to load/run Seaside in MagLev
https://github.com/MagLev/maglev/tree/master/src/topaz/Seaside30

YMMV, both these are pretty old, and pre-date MagLev 1.0. They haven't been updated or tested recently.

-- Monty


From: "Monty Williams" <[hidden email]>
To: "GemStone Seaside beta discussion" <[hidden email]>
Sent: Thursday, September 20, 2012 10:11:18 AM
Subject: Re: [GS/SS Beta] Ruby/Gemstone Question

Yes, your existing Smalltalk Seaside code can co-exist and communicate with Ruby. There have been talks on how to do this at a couple of conferences, but I don't think we ever fleshed out the instructions. 

Perhaps someone on this list or the MagLev list has a pointer to some practical experiences.

-- Monty


From: "Lawrence Kellogg" <[hidden email]>
To: "GemStone Seaside beta discussion" <[hidden email]>
Sent: Thursday, September 20, 2012 8:58:20 AM
Subject: Re: [GS/SS Beta] Ruby/Gemstone Question

Thanks Monty and Dale. I put in a request to join the MagLev group. I still don't quite understand if my existing Smalltalk Seaside code can co-exist with and communicate with Ruby. 

Larry


On Sep 20, 2012, at 11:33 AM, Monty Williams wrote:

Just a note ...

You should start with the MagLev installation, not the GLASS installation. We've run Seaside under MagLev, but I believe running MagLev using a GLASS extent has problems.
Make sure you use the correct NetLdi port with MagLev - 50378 is the MagLev default.

-- Monty