Saturday, August 16, 2014

"SOA Developer" - Really?

I have been looking at some of the developer related job ads and many a time I come across a job with title "SOA Developer". I cannot understand this really. Within the description it specifies a particular tool/technologies such as Oracle SOA Suite.

As I understand, SOA is an architecture not a language or framework or anything much technical. If the employer mean "SOA architect" by the title "SOA developer", I do not have problem with that because architecture in SOA should be "developed" by an architect.

So whats the real position should sound like. May be "Service developer" but that will be too abstract. So, it boils down to "orthodox" - BPEL developer or Java developer. I guess, because of so much hype about SOA, it has turned into business of selling product in the name of "architecture" and nothing is achieved by organization except for pain in terms of money and effort to look for tool specialists, pay hefty licence and build (Mostly un-scalable) infrastructure in order to run the tool.

If there is any title begins with SOA, in my view, the next word should be either "Administrator" or "Architect" just to be clear. Once the architecture is done, then a tool should be selected to implement the services or to wrap the legacy application with service layers. Then and only then there will be a need for a developer/coder to build the service. But most of the time, organization has already invested in one technology, say dot net or Java, so it does not harm to have "Java developer" or ".NET developer" from the inception of a SOA project but the job title should state exactly that and not "SOA developer".

Monday, July 7, 2014

Application Development Trend

Recently I have been trying to venture into some of the popular tools and technologies which I did not have much idea about. After working through the cloud, one thing I figured out is that developers have got independence from any infrastructure and its administrative need. They not only can concentrate on their app development but also learn bits and pieces (Specially basics) on networking and OS. On top of this, given that some offer free tier access, no drama in experimenting on a new piece of software service or even put something in production.

Recently, I started getting my hands dirty on document based NoSQL and it suddenly occurred to me that application developers are now almost free of database development dependencies as well, well ofcourse only if the problem can be solved by non-relational database. So, no headache on schema design then ripple effect from the changes, dependencies on the DB development, etc. There is, nonetheless, administrative work involved.

Here is my conclusion - Application developers really really need to design and develop their application very carefully with -
1. ALL business requirements fulfilled.
2. Non-functional requirements such as improved performance with proper use of algorithm.
3. Scalable applications development with appropriate usage of data structure.

This is a good opportunity for app developer to learn to develop some really good programming habit as these (and many other) tools are providing them with pretty much complete independence.

I am looking forward to getting opinions on this trend for I guess being application developer myself, I may be a little biased.

Wednesday, November 20, 2013

Barriers or excuses for not moving to cloud

Since the time I have been going hard on learning and experimenting the cloud computing with the leading IaaS provider - AWS - I have always been thinking what stops CIOs from moving to the cloud. In the due course of reading papers, talking to people, I got some points what they call barriers:


  • Performance and scalability - If a CIO thinks that one cannot move to cloud and be as scalable and high performing, I have to say that he/she needs to be educated on some of the fundamentals on cloud computing. Auto-scaling (Up and Down) automatically - THE biggest asset! How can someone prefer leaving their infrastructure idle or shutting down services to provide more server resources in case the demand peaks to take the Autoscaling opportunity provided by cloud providers such as AWS?? Scientific researchers, NASA live telecast from MARS Rover, banking industries, blue chips companies - please - they all are in cloud albeit hybrid model but they are and dont say that their cloud infrastructure is not performing as good. 
  • Infrastructure "Type" - Really?? At the end of the day do you want "T5", IBM XIV, Solaris BLADE, etc etc or you are looking for the same PERFORMANCE?? Are you really looking for managing those infrastructure no matter how many times you have to have the outages or do you want highly scalable, available and durable infrastructure with bare minimum utility based costing model - NO MATTER WHETHER THEY RUN YOUR SERVICES ON CHEAP INFRASTRUCTURE! Do you really care??
  • Security - Funny! Its one of the MAIN reasons moving to the cloud. The level of security AWS can provide, pretty much impossible to achieve unless you move away from your CORE business which may be selling a product and just manage secure infrastructure :) Please read 100s of pages from AWS Security White Paper - Each and Every service is SECURE - aside from app level and firewall rules level security that the coimpanies will provide on top! 

From what I can understand, companies will gradually move away from on-premise infrastrucure ONLY when they will see their competitors gaining extra-ordinary advantage all of a sudden, but Alas! it might already have been late move from them. The whole idea is NOT TO WORRY ABOUT your infrastrcture - that takes MOST of your IT time, resources and money and FOCUS on your CORE business, develop new services, products, deploy them within seconds for your customers, add more agility in your IT environment. Make your infrastrucure more secure, scalable, available with multi zone DR planning already in place within minutes if not seconds. Compare this with on-premise infrastructure maintainance - Dealing with vendors, upgrading Oracle, paying millions (Even for idle infrastructure), waiting for approval - rings a bell??

Tuesday, April 9, 2013

Find out whether IBM AIX file systems are LUNs

Scenario: A developer needs to know whether the file storage system is local or pointing to a LUN. For instance, the file systems he/she works on is /u02. Does it map to a local storage or SAN?

Steps:
1. Issue a mount command to first list out the mounted LOGICAL and/or PHYSICAL file systems and their mount points.

Example:
$ mount
node    mounted  mounted over    vfs       date             options    


-------- ---------------  ---------------  ------ ------------ ---------------
         /dev/hd4         /                jfs2   28 Oct 03:11 rw,log=/dev/hd8
         /dev/hd2         /usr             jfs2   28 Oct 03:11 rw,log=/dev/hd8
         /dev/hd9var      /var             jfs2   28 Oct 03:11 rw,log=/dev/hd8
         /dev/hd3         /tmp             jfs2   28 Oct 03:11 rw,log=/dev/hd8
         /dev/hd1         /home            jfs2   28 Oct 03:16 rw,log=/dev/hd8
         /dev/hd11admin   /admin           jfs2   28 Oct 03:16 rw,log=/dev/hd8
         /proc            /proc            procfs 28 Oct 03:16 rw            
         /dev/hd10opt     /opt             jfs2   28 Oct 03:16 rw,log=/dev/hd8
         /dev/livedump    /var/adm/ras/livedump jfs2   28 Oct 03:16 rw,log=/dev/hd8
         /dev/fslv00      /audit           jfs2   28 Oct 03:16 rw,log=/dev/hd8
         /dev/u01lv       /u01             jfs2   28 Oct 03:16 rw,log=/dev/hd8
         /dev/u03lv       /u03             jfs2   28 Oct 03:16 rw,cio,log=INLINE
         /dev/u06lv       /u06             jfs2   28 Oct 03:16 rw,cio,log=INLINE
         /dev/u02lv       /u02             jfs2   28 Oct 03:16 rw,cio,log=INLINE
         /dev/u07lv       /u07             jfs2   28 Oct 03:16 rw,cio,log=INLINE
tggfilesvr1 /D/TempNFS       /mnt/tggfilesvr1 nfs3   28 Oct 03:16 rw,bg,hard,intr,sec=sys

Clearly, /dev/hd* are the physical drives. However, u**lv seem to be logical volumes created by grouping one or more physical drives together.

2. Issue a command lslv to list the details of a logical volume.
Example:
$ lslv -l u01lv
u01lv:/u01
PV                COPIES        IN BAND       DISTRIBUTION
hdisk7            184:000:000   34%           000:064:000:093:027
hdisk0            184:000:000   34%           000:064:000:101:019


$ lslv -l u02lv
u02lv:/u02
PV                COPIES        IN BAND       DISTRIBUTION
hdisk2            1450:000:000  25%           150:375:200:375:350


Clearly, LV u01lv is made of hdisk7 and hdisk0 whereas u02lv (mounted on u02) is mapped to hdisk2.

3. Now we know that u02 file in question is pointing to physical drive hdisk2. In order to make sure whether it is in fact pointing to SAN, issue following command:

$ lsattr -El hdisk2 |grep lun_id
lun_id          0x2000000000000                        Logical Unit Number ID           False

If there is no SAN involved there will not be any output. Else, there will be one as above.


Thanks for reading.



Friday, March 22, 2013

Integration with File System

Scenario: An ESB hooks up to an application via a file system - mounted or local. It polls the file generated by the system. Once available, it reads it and processes it in order to send it to final destination. Challenge: 1. A partially generated file may get picked up by the ESB. 2. Non-transactional behavior. Options:

Time based polling: This approach is for ESB to wait for a few minutes before polling the file system. Assumption: We know the maximum size of the file that the application will generate and we are 100% sure that the file is completely generated after x number of minutes.

Risk: Suppose we polled for a file at a time t. So, the next polling starts at a time t + x assuming that the next file will be completely written to the disk by the time. However, there was a failure in the application generating the file and by the time it started generating the file again, it is already too late for it to finish writing the file completely by t+x. Thus, ESB gets a half-cooked file.

Conclusion: I think this approach is very risky and likely to generate data inconsistency very often in productive environment.

Size based polling: This approach is for ESB to poll several times before it "intelligently" concludes that the file has been written completely by looking at the file size. Assumption: After n number of polling for the same file, if the file size does not grow, we are 100% sure that the file is completely written by the application. 

Risk: There are chances when while writing the file, the application may fail. If the Exception/Compensation is not properly handled by the application, the partially generated file will not be deleted by the application and will stay there. The ESB after polling n number of times, will assume that the file is completely written because its size remains the same. However, actually it is not complete and might be missing its trailer or header.

Conclusion: This is a much better option that the first. However, even in this case there are some problems as mentioned above. So, unless there is a mechanism where the application gets notified by ESB that it has processed x number of records or there was a problem in this file (Which is difficult in file based Fire-And-Forget kind of asynchronous approach), or a proper exception handling in place within the application, there is always a great risk of losing the data - esp if the file structure and parsing is important from ESB point of view.

Polling for an "OK" file: This approach is for ESB to wait for a 0 KB file with same name as data file's name but appended with a an extension such as ".OK" or ".complete". Assumption: The application and ONLY application knows when it has FINISHED writing a file to the disk.

Risk: If not already implemented in the application, the additional functionality of generating the OK file needs to be implemented. The ESB also in this case will only deal with the archival of the OK file. Hence, it is possible for confusions to arise when there are lots of data file present in the ESB "Inbound" folder. Remember, in our previous options we used to archive the data files in order for ESB to not pick the files in duplicate.

Conclusion: Despite minimum risks involved in this option, in my opinion this should along with Option 2, might be a preferred implementation. Due to non-transactional behavior of the file system, the basic fact is that only an application knows when it finishes writing the file. Hence it is important that it provides another app (ESB) a signal when it finishes writing the file and option 3 is completely based on this theory. These options also assume that the application does not have any other means to communicate with ESB apart from a File System.

Wednesday, November 28, 2012

Convert your Windows 7 laptop into Wireless Hotspot

Situation: You have one internet connection via ethernet cable to your laptop but several Wifi mobile devices that need internet connections. Creating/Configuring a WiFi Virtual Miniport adapter: 1. Open cmd window with Admin privilage. 2. Type in "netsh" and then "wlan" 3. set hostednetwork ssid= mode=allow ssid= key= keyUsage=persistent 4. start hostednetwork 5. This will start the "Wireless Network Connection 2" which is your Wifi Mini Virtual port adapter. 6. Then you share your main LAN connection adapter by opening its property and selecting "Share connection..." checkbox in the "Sharing" tab. Also, select the "Wireless Network Connection 2" in the drop down list. You are done. Now, you should be able to connect your wifi enabled devices with the Access point described by , which should be picked up by the devices automatically.

Welcome to my blogs

The contents here are my independent point of view. They reflect my thoughts, experience in my professional and social life.

Search This Blog