Thread: [Embedlets-dev] [Ant] Build vs Deployment vs Management processes
Status: Alpha
Brought to you by:
tkosan
|
From: Andrzej J. T. <an...@ch...> - 2003-02-06 17:44:01
|
Gregg posts an insightful comment (snipped for brevity): > The servlet has the ability to do mass updates to multiple sites so that > mistakes due to missed steps or missed devices are highly unlikely. > Ant is not required because we have automated recognition of new devices, > installation of new configurations, replacement of devices due to failures > etc. Absolutely. Let's get clear on the fact that a build process (from the perspective of compiling and assembling an executable), is a different beastie than a deployment process (which is typically charged with configuration and dissemination of the application), which is again a bit different than a management process (thinking from an Operations/Monitoring perspective). There is some overlap that forms a grey area (configuration, reconfiguration) that any of these processes can subsume, which seems to be causing some of the confusion on this subject. The build process will probably be very nearly identical (with variations for specific platforms possibly, JStamp vs TStik vs. uVM, etc) regardless of the application. The management process will probably be rather unique to each particular application, but by supporting an emerging standard like JMX, existing systems management tools could easily be used to perform this function. The uniqueness here is not found so much in the management tool (use Tivoli, OpenView or even a custom servlet like Greggs, but in all cases JMX provides a base level of commonality on how you technically do the management), as much as unique business procedures (when this alarm is raised, do this.....) which may or may not be automated, depending on the circumstances. The deployment process will probably be very unique to the particular application that was created. As Gregg said, they created a custom deployment solution using a servlet for their application. There probably isn't enough deployment commonality across the whole space of possible applications that Outpost/Embedlets are targeted at to be able to create a single universal "deployer" solution that will meet everyones needs. For example, whether an embedlet/applications needs static versus dynamic configuration capability might alter the thinking of which process should do the configuration, as follows: If the application is using dynamic configuration of the deployed Embedlets (which is proposed to be an optional Outpost service), then the build and deployment processes are quite detatched from each other. You would do one build (per platform), then use the deployment process multiple times to load/config/run the code on many devices (note..the overall deployment process to multiple devices could be automated, basically in a loop that runs through the single device deployment process for each device). The dynamic configuration would be performed using the optional Outpost Management Service...which could be easily implemented as a Browser-visible Servlet that issues (under the covers) the JMX management calls to do the config for each device, similar to Gregg's implementation (or maybe using some other technique). No problem....the architecture handles it nicely, and the build and deploy are nicely separated in responsbility. If we look at more constrained devices or applications that use static configuration (that may not be able or want to support dynamic configuration) , there would probably be a bit more interaction between the build and deploy processes. The build process, which might include generation of the static config, could be used as a "subroutine" of the wider scoped deploy process. For example, the deploy process might grab the config info from a database, then call the build process (which could be just an JVM process which runs Ant) with some parameters specific to the device being deployed/configed, and the build process (Ant) would create a custom static build based on those parms. The deploy process would then grab this output (the statically configured build) and would somehow install it on the device. So even in the static scenario, it's possible to decouple the very application-specific deploy process from the build, by treating the build as a self-contained "subroutine". Ant is very powerful for build processes, especially Java and XML-oriented ones (it comes with a large library of tasks to handle very common Java and XML activities, including XSLT transformations, which might be useful for any static code generation we need). It's yet to be determined whether Ant also provides enough compelling value to a "deployment process" (that will be unique to each user's application and environment) to make it worthy of consideration. My guess is that Ant will not be as useful for that, and that more custom, UI-based deployment solutions will be required for many scenarios. But we don't have to make that determination yet. That being said, there may be some situations where there would be benefit to having the Deployment tool generate a custom Ant build.xml script for each device that needs to be deployed, based on a template script. This might provide for a more flexible custom deployer solution, as compared to one that hard-codes the deployment process in Java (or some other) code. Conceptually, this hybrid approach uses Ant as a rudimentary BPM (Business Process Management) engine with the businesss process (deployment process in this case) being declaritively specified in XML files (templates, etc.). For large Fortune 1000 companies with massive deployment requirements, it might even make sense to use a commercial BPM for this task, rather than investing in the development of a custom solution. More philosophically speaking, regarding the design of business systems, declarative specification of processes is much more flexible and maintainable, at lower cost than procedural (eg. programmed/coded) implementations, for complex processes. Also the design practices/paradigms of Separation of Concern, Modularity, Layering and Encapsulation apply to the build/deploy/management process implementations as much as to the Container design itself. In a nutshell: "keep 'em all decoupled as much as possible". Anyway...some thoughts from snowy Canada. Andrzej Jan Taramina Chaeron Corporation: Enterprise System Solutions http://www.chaeron.com |
|
From: Ted K. <tk...@ya...> - 2003-02-06 20:40:16
|
Andrzej said: >Also the design practices/paradigms of Separation of >Concern, Modularity, Layering and Encapsulation apply >to the build/deploy/management process implementations >as much as to the Container design itself. In a nutshell: >"keep 'em all decoupled as much as possible". I have found the build/deploy diagram in the Architecture document to be extremely useful for envisioning how all the pieces we have been talking about fit together. One thing that comes to mind here is that it would be nice if we could abstract the deployment target to just be an Embedlet Container (no matter where is it hosted) and the deployment artifact to be something similar to a WAR file (perhaps BAR (emBedded Application aRchive) ) that would contain all of the resources needed to run the Embedlet based application. Even though the Embedlet specification's responsibilities would need to stop here I could still see us developing a number of Ant targets for deploying BAR files into various Embedlet Container hosts including muivums, TStik/TINIs, JStamps, etc. Ted __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |
|
From: Nicola K. B. <nic...@ap...> - 2003-02-06 21:04:54
|
Ted Kosan wrote, On 06/02/2003 21.40:
...
> Even though the Embedlet specification's responsibilities would need to stop
> here I could still see us developing a number of Ant targets for deploying BAR
> files into various Embedlet Container hosts including muivums, TStik/TINIs,
> JStamps, etc.
All this discussion on Ant... why don't you all just try it and ditch it
with the speed of light if there is a better alternative or it doesn't work?
I am *very* ignorant about embedded devided, but this is inversally
propostional to my interest in it and in my knowledge of Ant ;-)
I can surely help you with Ant, and will be very happy to do so, because
I want to help in this great project and don't really get it just yet ;-)
--
Nicola Ken Barozzi nic...@ap...
- verba volant, scripta manent -
(discussions get forgotten, just code remains)
---------------------------------------------------------------------
|
|
From: Ted K. <tk...@ya...> - 2003-02-07 08:21:28
|
Nicola, >All this discussion on Ant... why don't you all just >try it and ditch it with the speed of light if there >is a better alternative or it doesn't work? This hits on a question I have been thinking about with regards to open source development. Since Andrzej will probably be the first committer for the Embedlet Container, and I will probably be the first committer for the Wiring Tool, is it acceptable for us to kind of force an issue like this by submitting these initial code bases with Ant build scripts and a directory structure optimized for use with Ant? Somehow this does not 'feel' quite right and yet perhaps allowing the initial 'doers' to make decisions like this is open source's practical solution to a tough problem? Anyway, one way to answer your question is with another question like the following: 'We know that Enterprise Java developers think that Embedded Java systems like TINI (www.ibutton.com/tini) are really interesting and that they look like they would be fun to play with. Since these systems are relatively inexpensive (TINIs are around $110) then why don't they just buy one and give it a try? The problem isn't the cost or the programming environment. The problem is that most CS-oriented developers (like Enterprise Java developers ) do not know anything about things like voltage, current, chip Data Sheets, electronics tools (http://www.ibutton.com/TINI/developers/tkosan.html), etc. The barrier preventing them from even figuring out how to get started with something like a TINI is extremely high. Now one needs to take this scenario and map it into an analogous perspective from a typical embedded systems programmer's point of view. Most embedded systems programmers do not know what an application server is, or a presentation layer, a database, make, CVS, object oriented programming, XML parsers, etc. The barriers that bar typical embedded systems developers from just playing with stuff in the CS-oriented software world are similar in severity to the things that bar CS-oriented developers from playing with stuff in the embedded world. A typical embedded systems developer who might be interested in downloading and playing with something like Velocity is immediately faced with a number of conceptual hurdles to overcome. The first is CVS (or any versioning system). Almost none of the embedded developers I know use something like CVS (or even know what it is) and they are immediately faced with quite a steep learning curve to figure is out. After they succeed in getting the software on their computer (probably from just downloading the tarball!) then they are faced with building it. The next hurdle is that most embedded developers that I know never really learned what build systems like make are for and so they are going to have a tough time figuring out what Ant is without having anything to compare it to. And these barriers go on and on... My main point here is that the embedded systems developers and the CS-oriented developers live in very different worlds which have mostly orthogonal skill sets. The good news is that, hopefully, the community that is being built around this open source Embedlets project looks like it has a good chance to become a place where these two groups can meet in order to figure out a way to bring these two areas together (and this needs to happen somewhere before the projection of 'billions of devices being attached to the internet' can come true). It looks like there is going to need to be a lot of 'hand holding' on both sides throughout this process but I suppose that this is all part of the adventure. >I am *very* ignorant about embedded devices, but >this is inversely propositional to my interest >in it and in my knowledge of Ant ;-) And of course I am just getting started with Ant but know much about embedded systems. ;-) I have a couple of ideas here: 1) What does everyone think about us setting up a CS-oriented developer/Embedded Systems developer list within this project where people from both areas can ask hand-holding level questions to each other? I know that there are a lot of CS-oriented questions I would like to know the answers to but the main developer list does not seem to be the best forum for doing this. If we are going to try to integrate these two areas, a 'no question is too stupid' list like this might prove to be helpful. 2) Are you interested in learning how to start playing with a Java based embedded system like TINI? If so I will send you a free TINI and help you to get up and running with it. This should help for gaining a feel for what the embedded systems side of 'the great divide' is like. ;-) >I want to help in this great project and don't really get >it just yet ;-) Well, you already have started to help! I downloaded Forrest this week and started playing with it (I even forced myself to download the source version and build it from scratch in order to learn how to do this better). I must say that Forrest is an amazing piece of work and I am in the process of setting it up for an experimental version of the Embedlets.org main web site. I am firmly convinced that at least 50% of the benefits derived from this Embedlets project is an open source community where the CS-oriented world and the Embedded Systems world can be brought together and synthesized. If this is true then it is going to be very important for use to develop, publish and maintain a significant number of documents which explain exactly what we are doing and how each area relates to the other. After studying this problem for the past couple of months I have not found a system that even comes close to Forrest for solving it (thanks for the tip!). Let me know about the TINI, Ted __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |
|
From: Nicola K. B. <nic...@ap...> - 2003-02-07 08:42:57
|
Ted Kosan wrote, On 07/02/2003 9.21: > Topic tags:[AR][GW][DO][HW][PM] > _______________________________________________ > > Nicola, > > >>All this discussion on Ant... why don't you all just >>try it and ditch it with the speed of light if there >>is a better alternative or it doesn't work? > > > This hits on a question I have been thinking about with regards to open source > development. Since Andrzej will probably be the first committer for the > Embedlet Container, and I will probably be the first committer for the Wiring > Tool, is it acceptable for us to kind of force an issue like this by submitting > these initial code bases with Ant build scripts and a directory structure > optimized for use with Ant? Somehow this does not 'feel' quite right and yet > perhaps allowing the initial 'doers' to make decisions like this is open > source's practical solution to a tough problem? [snipped cool explanation of cross-skill interaction] Wow, very well said. Flag this, it will make a good project-goals page :-) BTW, I'm also an almost-mechanical-engineer (stopped my studies nar the end because of health problems, but now I'm restarting while I work). I liked playing with simple circuits when I was a kid (the eversturdy NE555), and I work in an automation firm, so I know the basics and the latest PLC advances, but have never really actively done anything with my hands. Probably this could help me somewhat. >>I am *very* ignorant about embedded devices, but >>this is inversely propositional to my interest >>in it and in my knowledge of Ant ;-) > > > And of course I am just getting started with Ant but know much about embedded > systems. ;-) ;-) > I have a couple of ideas here: > > 1) What does everyone think about us setting up a CS-oriented > developer/Embedded Systems developer list within this project where people from > both areas can ask hand-holding level questions to each other? I know that > there are a lot of CS-oriented questions I would like to know the answers to > but the main developer list does not seem to be the best forum for doing this. > If we are going to try to integrate these two areas, a 'no question is too > stupid' list like this might prove to be helpful. Usually creating separate mailing lists is not something I encourage at Apache, since it usually divides discussions more than one would want. Why not simply prepending each of these with [newbie] or [ant] ? Those not interested can filter. > 2) Are you interested in learning how to start playing with a Java based > embedded system like TINI? If so I will send you a free TINI and help you to > get up and running with it. This should help for gaining a feel for what the > embedded systems side of 'the great divide' is like. ;-) :-D Yeah! +1 >>I want to help in this great project and don't really get >>it just yet ;-) > > > Well, you already have started to help! I downloaded Forrest this week and > started playing with it (I even forced myself to download the source version > and build it from scratch in order to learn how to do this better). I must say > that Forrest is an amazing piece of work and I am in the process of setting it > up for an experimental version of the Embedlets.org main web site. Cool! > I am firmly convinced that at least 50% of the benefits derived from this > Embedlets project is an open source community where the CS-oriented world and > the Embedded Systems world can be brought together and synthesized. If this is > true then it is going to be very important for use to develop, publish and > maintain a significant number of documents which explain exactly what we are > doing and how each area relates to the other. After studying this problem for > the past couple of months I have not found a system that even comes close to > Forrest for solving it (thanks for the tip!). Call it by its name, "shameless plug" ;-) > Let me know about the TINI, yeeessss!!! :-) -- Nicola Ken Barozzi nic...@ap... - verba volant, scripta manent - (discussions get forgotten, just code remains) --------------------------------------------------------------------- |
|
From: Ted K. <tk...@ya...> - 2003-02-07 10:04:21
|
Nicola, > Usually creating separate mailing lists is not something I encourage at > Apache, since it usually divides discussions more than one would want. > > Why not simply prepending each of these with [newbie] or [ant] ? > Those not interested can filter. Ok, this seems like it makes sense and I will be the first one to ask a newbie question. > Yeah! +1 I have spent some time recently looking through the Apache developer archives for clues on how open source projects should be run. I kept seeing this '+1' syntax and the best I was able to determine this is used for voting purposes. Could you explain what this syntax is for and how it is used? Ted __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com |
|
From: Nicola K. B. <nic...@ap...> - 2003-02-07 10:59:23
|
Ted Kosan wrote, On 07/02/2003 11.04: > Topic tags:[AR][GW][DO][HW][PM] > _______________________________________________ > > Nicola, > > >>Usually creating separate mailing lists is not something I encourage at >>Apache, since it usually divides discussions more than one would want. >> >>Why not simply prepending each of these with [newbie] or [ant] ? >>Those not interested can filter. > > Ok, this seems like it makes sense and I will be the first one to ask a newbie > question. > > >>Yeah! +1 > > > I have spent some time recently looking through the Apache developer archives > for clues on how open source projects should be run. I kept seeing this '+1' > syntax and the best I was able to determine this is used for voting purposes. > Could you explain what this syntax is for and how it is used? The voting process http://incubator.apache.org/drafts/voting.html Basically it's a vote. +1: I agree and will help +0: I agree but won't help -0: I'm not sure, it doesn't look like a good idea -1: I disagree Also, if a -1 is case on a commit, it's not a vote but a veto. The veto cannot be overruled, but must be technically justified. It can be removed only by the caster. Other infos: The foundation http://www.apache.org/foundation/ " The Apache Software Foundation exists to provide organizational, legal, and financial support for the Apache open-source software projects. Formerly known as the Apache Group, the Foundation has been incorporated as a membership-based, not-for-profit corporation in order to ensure that the Apache projects continue to exist beyond the participation of individual volunteers, to enable contributions of intellectual property and funds on a sound basis, and to provide a vehicle for limiting legal exposure while participating in open-source software projects. " An explanation of Apache guidelines: http://jakarta.apache.org/site/guidelines.html A glossary http://incubator.apache.org/drafts/glossary.html -- Nicola Ken Barozzi nic...@ap... - verba volant, scripta manent - (discussions get forgotten, just code remains) --------------------------------------------------------------------- |
|
From: Brill P. <bri...@ro...> - 2003-02-07 10:27:35
|
> This hits on a question I have been thinking about with regards to open source > development. Since Andrzej will probably be the first committer for the > Embedlet Container, and I will probably be the first committer for the Wiring > Tool, is it acceptable for us to kind of force an issue like this by submitting > these initial code bases with Ant build scripts and a directory structure > optimized for use with Ant? Somehow this does not 'feel' quite right and yet > perhaps allowing the initial 'doers' to make decisions like this is open > source's practical solution to a tough problem? I think I missed something here... do people *not* want to use Ant in the development environment? I remember talking about using ant on the backend of Outpost for some reason, but maybe I just missed the ball completely... FYI - I *will* be using Ant for JAPL (unless someone else working with me on it has a major problem with that?). - Brill Pappin Rogue Robotics www.roguerobotics.com |