Showing posts with label AWS. Show all posts
Showing posts with label AWS. Show all posts

Thursday, July 31, 2014

"Lining up the Architecture" - Liferay 6.2 + Glassfish 4 Bundle, AWS, and Monitoring Services. Side-notes: Open Education Resources Online

Shortly ago, this year, I began sketching up some concepts for what would have to be a business organization -- assuming it could not be registered as any sort of non-profit producer-owned cooperative in computing technology -- and as such would be a sole proprietorship, in its ownership model, lacking so much as a corporate board for the matter. I will not presently denote that I would like to name that business, though I would offer a hint, at least to myself, at any later time: It would be a name derived after a feature of the geology of the valley around the home town where I grew up, such that my grandfather had once explained to me. Beneath the soil of that valley -- at least, where was the house that I grew up in -- the ground is not so permeable as the loose topsoil, there. Moreover, I hope it would be a business name with a sense of character to it, denoting of "Life beyond the rose garden," but without any sort of a sense of pessimism. Once if I'll be able to register a domain name for that business, in some small portion of my student budget, then I would be willing to denote the name of that business, online. Presently, I'm more concerned about the architecture for the information system that would represent the core of that business' web presence, online.

In short summary: I plan on installing Glassfish 4 into a Tomcat 7 instance created with a Linux AMI hosted in an Amazon Web Services Elastic Compute Cloud (EC2) instance. Then, I would install Liferay 6.2 into the Glassfish 4 applciation server. I've chosen Glassfish 4 for this model, primarily due to Glassfish' integration with CORBA -- a feature that I know would not be unavailable with alternate application servers, such as each of JBoss AS7 and Wildfly (ie. JBoss AS post-AS7) however I'm of an impression that CORBA might be more well supported in Glassfish. Also, I'm simply happier with the thought of installing Glassfish, and Liferay into Glassfish.

As well as that I would be installing those resources into my Linux AMI, I've downloaded the Liferay 6.2 + Glassfish 4 bundle, and will be installing that onto a Microsoft Windows 8.1 partition. I could then use the "Demo portal" installed with the bundle, for purpose of generic sandbox work, or could uninstall the "Demo portal" and start from scratch.

Basically, I plan on creating one portal, to begin with, in the Liferay-on-AWS installation. In the portal's public pages, it would represent a sort of hub. In its private pages, it would represent a sort of MIS primarily for administration of the public portion of the portal/hub. The portal/hub would host some content for integration with the Amazon Associates program, as well as some public project information for public projects that I would be managing with the same hub. I plan on integrating Github with the portal -- planning on developing portlets, over time, to accomodate.

Between the portal as installed on my laptop, and the portal as installed on AWS, I plan on enabling the Liferay Staging feature, for developing content locally then publishing it to the hub, via Liferay itself. Certainly, that would not be the only way to publish content to the portal, but it would be an option such as I would like to understand, as my being a novice portal developer.

Today, I've found a couple of resources via Twitter, such as I would like to make note of, for future reference -- namely, the companies, each, Datadog and Coperegg. I'm afraid I don't have any sort of a populist view to present, about the resources and services provided by those companies. Simply, they both may be of some relevance with regards to service monitoring. I'm considering Coperegg primarily for their Amazon Cloud Instance Monitoring service. Datadlog, I should like to make reference to at some later time, I think, if perhaps it could be useful for a "Build server' for EDA projects and simple software projects

Coperegg has published, via their twitter account, a nice article with regards to server monitoring[1]. The article presents a succinct overview of how how monitoring and measurement processes may be implemented, on a server. I consider that it's a meaningful article, and as such, it has left a positive impression to me, about Coperegg. In a broad sense, my having reviewed some of Coperegg's web-based materials, I would like to consider using Coperegg in lieu of trying to piece together a Nagios + JMX hack of my own, for monitoring the portal as would be installed at AWS.

Datadog's monitoring service, though in some ways perhaps similar to the service provided by Coperegg, is such that I would wish to consider primarily with regards to developing a build monitoring service, for one-time software builds (Verilog or VHDL, Java or Common Lisp, or otherwise) for monitoring such processes on a build server, in such that would comprise a software build/distribution workflow, within a normal software development process. I consider that I can understand at least "that much" of what the architecture could be of such a thing. Of course, it would be more tedious to address that architecture into relevant details. If Datadog may be able to alleviate some of that tedium, I would certainly consider outsourcing some of the hypothetical build process to Datadog.

The matter of my endeavoring to install an enterprise grade web portal server, as my being an individual developer, it's such that I would not wish to make any sort of an ostentatious presentation about -- it being such that I'm really not so much looking forward to, candidly, though I think it would be more appropriate than any alternate approaches for my to develop to web content, online. The Liferay portal framework provides its own user model, for instance, and would already support integration with the Glassfish application server.


Of course, my being a student of DeVry University Online (DVUO), and though this matter of installing a portal sever is rather far beside the progress of my current course of study at the same, but I think I could customize the "Portal on laptop" such that it could be applied, privately, in a manner supportive of my own continuing studies as a student of DVUO -- such as for providing a central resource for my to use in managing the weekly lab materials, homework assignments, and as to digitize my paper notes from the textbooks. In that regard, I think I should define an individual portal, in at least the "Liferay on laptop" installation, a portal distinctly for purpose of developing a bit of a knowledge management technique, with regards to my own student materials. Though I am by no means a qualified expert in the topics we're studying in any single semester, but if I may be able to understand the material well enough to observe that the courses, in each, describes a sort of controlled vocabulary for instance, then I may be able to apply that concept -- in regards to my being a student of the private institution, DVUO, moreover in my studying materials published publicly by other academic institutions -- that it might at least provide a nicer way to manage the folders containing my weekly responses to the weekly course assignments. Thus far, I've been using a bit of an ad hoc mix of Dropbox and the local hard drive on my laptop, for that purpose, as my being a student of DVUO. Sometimes, also, I copy and revise my own discussion forum responses, for those that I would like to make any particular attention to, later, then publishing the revised item here at my DSP42 'blog.


I don't know if I should like to push that particular portal to the broader web. It would be kind of a sandbox resource, anyway.

I hope that I may sometime be able to develop some further ideas with regards to the open education resources published by each of OpenStax CNX, Coursera, uDacity and the OER Commons. Most notably, I think, the Coursera self-paced course, Calclus 1 I think promises to be an edifying course, and especially of some help to me, as my being a student of the electronics and computing program at DVUO. Certainly, electrical circuit analysis -- at least, insomuch of analog AC and DC circuit features, such as of electrical capacitance, inductance in AC circuits, and electrical restistance -- it would involve "a lot of math," in any practice. Though so much of that might be given something of a shortcut, with some careful application of Electronic Design Automation (EDA) tools, however I would like to be certain that I would understand the concepts entailed of the principles of the matter, before I would endeavor to apply those concepts in any application of those principles. So, I may have to study outside of class for Calculus 1, inasmuch as working outside of class in developing the portal structures, as denoted -- and this, on my shoestring student budget -- however, perhaps it may be as well "Worth it," in the proverbial "Long run."

At least, there's some community at Twitter. Though there's never an opportunity to say a lot in 140 characters of microblog text, however I think I'm learning a gist of it, of how to communicate @Twitter, at least to my best ability as such.


Article's Bibliography:

[1] Mueller, Ernest. Know your options for infrastructure monitoring. 2014. InfoWorld.

Wednesday, May 21, 2014

Notes - Applications for Memory Locking, and a Thesis Outline about Real Time Application Design

While studying some materials with regards to applications for Common Lisp programs, in integration with Amazon Web Services (AWS), I began to read about the process of request signing for the REST API available onto select AWS applications. This morning, I've found the following resources, specifically in that topic domain:
In regards to the secret key component, specifically, I thought it was an apropos time to begin studying about memory locking.

In that course of study, I'd found documentation about the POSIX mlock() function, as implemented in GNU LibC on the Linux platform  namely, manual page mlock(2), in the Linux Prorammer's Manual

It was in reading the notes section of that manual page, when I discovered a certain item of some tangential interest, as highlighted in the following excerpt  emphasis and link added, for purpose of clarity and informativeness, respectively, as namely with regards to the matter tangential to this study with regards to signing and authentication of AWS REST API requests.
Memory locking has two main applications: real-time algorithms and high-security data processing. Real-time applications require deterministic timing, and, like scheduling, paging is one major cause of unexpected program execution delays. Real-time applications will usually also switch to a real-time scheduler with sched_setscheduler(2).

manual page mlock(2), in the Linux Prorammer's Manual
Of course, if in trying to address memory locking, if for purpose of both secure data processing and real-time application design, simultaneously, it might serve to create a sort of priority deadlock. Thus, I arrive  essentially  at the matter of why I've begun writing this notes page, this morning.

Real-time application development — such as I understand  would be a concept rather broader than, specifically, the Common Lisp programming platform.  As a software developer familiar with the Common Lisp programming platform, I may wish to specialize my own point of view about the concept, as though it was a concept of some meaning, as if exclusively with regards to Common Lisp software programming. In that sense, I might like to endeavor to "Brand" the concept, however  — speaking as a student of computer networking, somewhat familiar with some Microsoft products  — I'm afraid that my own specialized "Brand concept" would not be sufficient as to really address the nature of the broader concern, in any sufficiently technical regards.

My logical bias about the concept, thusly denoted, I would like to gather some notes, here, as with regards to design, development, and implementation or real-time applications. It's my point of view that the following observations, broadly, might "stand to reason," so far as one might logically ascertain in a sense of focus, if not of some practical, perhaps by in large personal experience with regards to computer systems and software programming.

Causes of execution delays in software programs
  • Execution Delays, in an Event-Oriented View
    • Garbage collection (GC)
    • Virtual memory paging
    • Linear network/communication delays
      • I/O blocking
        • Causes (TBD)
        • Mitigating factors
          • I/O Scheduling
          • ...
      • Network latency
        • Link-level latency
        • Packet routing
    • Schedule Wait
      • Event Networks
      • Linear dependencies onto other events
  • Execution Delays, in a Composite View
    • Total momentary delay time 
      • As in: The sum of event delay times among individual processes 
        • Aside: View of an application as a finite state machine (i.e. FSM)
      • Mechanical delay time
        • measured as a discrete time value
        • the difference of (1) expected time of completion and (2) current time
    • The "Butterfly factor"
      • Nondeterministic systems
      • Unexpected delays
      • Mitigating factors:
        • Expectations Resilience
        • Design Resilience in Systems Planning and Development
        • Advice
          • Painter, Bob Ross
          • Proverbs Literally of Patience, a selection of: 
            • "Ants aren't a strong species, yet they prepare their food in the summer"  Proverbs 30:25, International Standard Version.
            • “Simplicity, patience, compassion. / These three are your greatest treasures. / Simple in actions and thoughts, you return to the source of being. / Patient with both friends and enemies, / you accord with the way things are. / Compassionate toward yourself, / you reconcile all beings in the world.” — Lao Tzu, Tao Te Ching. excerpt.
            • Guns 'n Roses, Patience. music video
Commentary (ad hoc)

Of course, if I was to develop a singular thesis about the concept, then I should certainly like to detail each of those technical topics, further. Of course, I should have to elide the subjective/creative/interpretive matter of advice, in that.
  
Candidly: If at this time, I was enrolled in any sort of a formal graduate studies program, academically, then perhaps it might be more obviously relevant to the academic institution to which I am enrolled that I would begin to write a thesis paper. Failing that, however — candidly — I cannot expect to find either guidance or personal incentive, to develop any such outline into a thesis paper. That being, no doubt, a task requiring of no small sense of focus, I shall prefer to leave it at an outline, at this time.