(Free) Distributed System Proof-of-Concept

I recently completed and implementing the system design of an application. The system design is web based, but the direction shifted to win32 desktop-based application in the second half of the design phase. This isn't ideal, but it's still fine, as system design phase mainly focuses on functional module design, database design and capturing business requirements from a more technical view.

Lots of facts happened while I running the system, but only several major things that I could tell you right now. It seems to be an early warning for you if you have the same project type as me, such as :

1. Database synchronization
This internal application has local database containing tens of tables that should synchronized to the web system when it ready. Now you need to learn, when and how the database will transported down or up - or even control what's down to user database. Beware that weak system design will make synchronization potentially ruined.

2. User Sign On
User control is more important to the system wide globally that affect both desktop and web after all. Notice when and how is user accepted or rejected from the system.

3. Application Distribution
At this moment, the biggest benefit everyone agrees, is that web-application does not require client side deployment. But how you control desktop based application deployment and versioning problem more effective?

However, we're focussed at last point, the software distribution it self. Since this particular system is unique, but I think I made this one succesfully. Starting from theory lesson, ends up with the conceptual practice, finally I named it as SISPIu Distribution Management. And here's the story...

Theory
Software distribution is the process of delivering software to the end user. It may take the form of a binary distribution, with an executable or installer which can be downloaded from the network or wide area Internet.



At least, there are four features of software distribution system. One of it, is, remote installation, which it will perform automatic installation and execution of software as well as wizard utility to make a distribution package. Other than that is monitoring status of distribution, it provided with compression technique to minimize size of files being distribute and it will be function to remotely some operations (reboot PC and remote execution if it necessary). Additional Features that included is real time monitoring of software distribution process. Enable or disable limit administrative function to Normal User and standardize Desktop
Environment are the roles of policy control.

Basic Principal of SISPIu Distribution Management
For the sake of completeness, I’ve included basic principal Guidelines below. It's slightly designed to suit the needs, there are:
  1. Local installation contains package and updater module. While the updater module functioned as package transporter, the package it self should meet versioning number rule below.
  2. A normal version number MUST take the form X.Y.Z where X, Y, and Z are non-negative integers. X is the year age of software (starting with 1), Y is the month age of software after X, and Z is the day of software released. Each element can bound numerically and depends on when the package deployed. For instance: 1.0.0 (initial deployment) -> 1.9.5 -> 1.10.9 -> 1.11.24. Patch version is not considerably needed, but you able to add it. Hence, there's no 0 number here (except for initial version). Nor major or minor version. This is what I called as simplify the version number, as we'll know directly how long that two version released or how old the application stand?
  3. Once a versioned package has been released, the contents of that version MUST NOT be modified. Any modifications must be released as a new version. All packages (old and new version) must stored in the same server directory and accessible through defined IP number and port, which that both number (also username and password if required) are embedded to the package.
  4. The package should contains versioning checker and validation module, also server URL and access account. Once a versioned package detected as a newest than existing package version, call the updater module and shut the current running package.
  5. After download successfully the new package, updater module should execute new package and shut down it self.
That's all, but anyway, sorry, I can't share code for this concept :)

Conclusion
I rely on various web applications to do tasks, projects and life. But I still believe the future of computing isn't entirely web-based. It's necessary to have the desktop as the pivotal point, because the power of the desktop is important for a rich user experience - and will be, for a very long time to come.

That is why software distribution become my critical point since what we require then are smart, webified, internet deployable desktop applications - that can reliably store data, serve it robustly, and interact with both remote and local databases. Also uninterrupted experience during version updates.

What is your thought? Do you have a successful story or failure to share?

Labels: ,


PS: If you've benefit from this blog,
you can support it by making a small contribution.

Enter your email address to receive feed update from this blog:

Post a Comment

 

Post a Comment

Leave comments here...