Montag, 23. Juni 2014

TimelineJS for offline usage

I really love TimelineJS as a nice and ease of use tool. But wait: How to use this tool offline? I spent hours crawling github and blogs. None of the mentioned worked for me. So here's the Alex way of using TimelineJS offline - no API loading from the web, no cloud based data hosting.

I used my local Windows 7 64bit and first put Apache 2 on my machine. Find Windows binaries here for download. Just do a straight default install and you're fine. Apache will install as Windows service and by default your htdocs web root will point to


C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs

Note Ensure no other service such as IIS or Tomcat already uses port 80 of your machine.

Then empty your htdocs directory and put content of tl.zip (click for download, MD5 fingerprint: ad715f5e39d903a7f1737b54f62d851c) in. The ZIP archive contains the following files/structures:


build
img
content.json
index.html

That's pretty much it. The build directory contains als necessary CSS and JS files - most important a copy of jQuery. Place your images you want to use in your timeline in the img directory. And your data resides JSON formatted in content.json file.

Now point your favourite web browser to http://localhost/ - you should see your timeline showing up. If not, please check Apache error log (default location C:\Program Files (x86)\Apache Software Foundation\Apache2.2\logs).

Enjoy building your timeline offline and publish to your intranet. Start play around with timeline customization. A good start is index.html timeline_config section.



Sonntag, 8. Juni 2014

High Availability vs. Scalability

Ever wondered about the difference between high availability (HA) and 
scalability? For me, scalability has always something to do with clustering, where HA is a part of by design.

Man - Am I wrong!

Since I'm a visual addicted person, let's draw an example


Joe is using my application, which is clustered for load balancing reasons. So if one node of my cluster fails, automatically another one will do the work.

That's great, because I got a scalable application by simply adding nodes to my cluster. But is Joe happy too?


Nope. Joe browsed my web shop half an hour, when one of my nodes failed. Joe gets angry about, because he lost his shopping basket and needs to start over.

That's why I did lots of research and configuration work by adding inter node communication to my cluster to make Joe happy again. Now Joes non persistent information such as sessions are shared between nodes. And now my cluster has real high availability functionality implemented besides normal scalability features.



Sounds simple? It's not! In particular adding HA features is a bunch of work depending on your applications features and complexity. And it's much more than just running your application on multiple server instances. And we didn't even talk about the database backend your application relies on.

Adding load balancing in best case involves operations staff only. Adding HA definitely involves operations and software developers - the beginning of a premium DevOps project. Read my DevOps blog post (German language only)