tag:blogger.com,1999:blog-23681668843780828042024-03-18T02:47:53.905-07:00Ankur Kumar's Blog - Pragmatic Best Practices for Digital ArchitectureThe purpose of this blog is to provide information on best practices & discuss practical and feasible architectural solutions specially for digital architecture. Also, there will be information about emerging technologies. Feel free to ask any questions or share your comments.Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.comBlogger31125tag:blogger.com,1999:blog-2368166884378082804.post-24350540020037277052020-10-03T00:12:00.002-07:002020-10-03T08:11:41.231-07:00Launched Vedcraft - A place for Software Architects!<p>The idea of <a href="vedcraft.com" target="_blank">Vedcraft</a> came into existence a few years back while mentoring a programmer to be groomed as a software architect. In hindsight, when I was working as a senior software engineer, I wished to find a place to get connected with my mentor and share the practical knowledge of software design and software architecture. <br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://vedcraft.com" style="margin-left: 1em; margin-right: 1em;" target="_blank"><img border="0" data-original-height="221" data-original-width="218" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr-cm-NBDzitMemqtA_6sH-04YXHsIoEwv81RpgpQbQGI6600SNA1kicmSgkupIWega2ylN0p-muQm508rqyp-GRZu1feXXRQLOvVzwIdSSx6sS7evf66aMl2mDNlWnKkKNhOGb0CdBQHH/s0/20200925_231137.jpg" /></a></div><i><blockquote>Vedcraft is an honest effort to help in grooming software programmers as
software architects. In addition, seasoned architects can help groom
aspiring architects and also collaborate, and share their knowledge.</blockquote></i><p></p><p>Vedcraft has initially designed with the following focus areas in mind and will continuously evolve as it progresses.<br /></p><ul style="text-align: left;"><li><b>Architecture –</b> with focus on sharing foundational elements of software architecture as a practice</li><li><b>Learning Path –</b> with focus on providing a clear path to be groomed as an architect</li><li><b>Certifications </b>– with focus on providing knowledge, learning, and experience on architecture certifications</li><li><b>Tech Trends</b> – with focus on sharing upcoming architecture trends and technologies</li><li><b>Tech Events</b> – with focus on providing information on key industry technology events and sharing learning from those events</li></ul><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnO17HCz_C445gMqIVIg2IWELEbj9RxVYYl2ocMWQTY7p7-RY5ZsEfq3wvj8ryv032zIYIIf_YDM_f03CtU9tZO4Cdsq6G2lawjRQ5R4vr5kl3qRarstJXmutu359q_oQNr8valvYg3dTk/s1805/focus-areas.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="788" data-original-width="1805" height="279" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnO17HCz_C445gMqIVIg2IWELEbj9RxVYYl2ocMWQTY7p7-RY5ZsEfq3wvj8ryv032zIYIIf_YDM_f03CtU9tZO4Cdsq6G2lawjRQ5R4vr5kl3qRarstJXmutu359q_oQNr8valvYg3dTk/w640-h279/focus-areas.png" width="640" /></a></div><br /><i> </i><p></p><p><i> Please share your feedback and comments </i>to ensure that this initiative becomes successful and looking forward to your support.<br /><i></i></p><p><i>A glimpse of website launched:</i></p><p><i> </i></p><div class="separator" style="clear: both; text-align: center;"><i><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKNhtMGYZKg2Kk3TbO_VCU96IZMWI-8lb6xWsRfeHQKZMoMuxHRvArf0KcYBRTb_Ru_k006Mls6iuepomuE_RE1yRl0_RCOwDN2b5wiZbV1BmCmp1xuRsBl2SXQ62ppKhif7hyphenhyphen6ZzeTIjN/s1544/vedcraft.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="784" data-original-width="1544" height="324" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKNhtMGYZKg2Kk3TbO_VCU96IZMWI-8lb6xWsRfeHQKZMoMuxHRvArf0KcYBRTb_Ru_k006Mls6iuepomuE_RE1yRl0_RCOwDN2b5wiZbV1BmCmp1xuRsBl2SXQ62ppKhif7hyphenhyphen6ZzeTIjN/w640-h324/vedcraft.png" width="640" /></a></i></div><i><br /><br /></i><p></p><p><i> </i></p><p><i> </i></p>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com5Los Angeles, CA, USA34.0522342 -118.243684918.368593565119539 -135.8218099 49.735874834880462 -100.6655599tag:blogger.com,1999:blog-2368166884378082804.post-86046409441290953052020-06-15T10:46:00.011-07:002020-06-15T15:05:56.116-07:005 Essential Tips on Getting Certified as AWS Certified Solutions Architect – Associate (2020)<div><br /></div><div>AWS has launched new version of <a href="https://aws.amazon.com/certification/certified-solutions-architect-associate/" target="_blank">AWS Certified Solutions Architect – Associate (SAA-C02)</a> in March 2020 and based on my journey of getting certified, would like to share my experience to make you successful. Here are <b>5 key tips</b> you can follow to make sure your journey also results in success:</div><div><ul style="text-align: left;"><li><b>Tip#1 - Complete an online video course</b> by either of these providers (even if you have hands-on AWS experience for 1-2 years, recommend to do the course as it covers broader spectrum of AWS capabilities/services):</li><ul><li>A Cloud Guru Course: <a href="https://acloud.guru/learn/aws-certified-solutions-architect-associate">https://acloud.guru/learn/aws-certified-solutions-architect-associate</a></li><li>Stephane Maarek Course: <a href="https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c02/">https://www.udemy.com/course/aws-certified-solutions-architect-associate-saa-c02/</a></li><li>Neal Davis Course: <a href="https://digitalcloud.training/aws-certified-solutions-architect-associate-hands-on-course-saa-c02/">https://digitalcloud.training/aws-certified-solutions-architect-associate-hands-on-course-saa-c02/</a></li></ul><li><b>Tip#2 -Prepare a Cheat Sheet for revision and key reminders:</b></li><ul><li>Refer to cheat sheet by Neal Davis: <a href="https://digitalcloud.training/aws-certified-solutions-architect-associate-hands-on-course-saa-c02/">https://digitalcloud.training/aws-certified-solutions-architect-associate-hands-on-course-saa-c02/</a></li><li>Though there are many, recommendation is to prepare your own cheat sheet because in my opinion it is very personalized. For examples, based on your interest and what you remember, you might be good in S3 & VPC, but may need more revision of Autoscaling and hence your cheatsheet will have more focus on Autoscaling.</li><li>Key recommendation: In your cheatsheet, keep screenshot of AWS Services, which you are not comfortable with to keep it as a reminder. <br /></li></ul><li><b>Tip#3 - Practice Exam multiple times:</b></li><ul><li>Refer<b> </b>to Whizlabs AWS Practice Exams or Neal Davis's Practice Exams</li><ul><li>Whizlabs:<a href="https://www.whizlabs.com/aws-solutions-architect-associate/">https://www.whizlabs.com/aws-solutions-architect-associate/</a></li><li>Digital Cloud: <a href="https://digitalcloud.training/aws-certified-solutions-architect-associate-practice-tests-saa-c02/">https://digitalcloud.training/aws-certified-solutions-architect-associate-practice-tests-saa-c02/</a></li></ul><li>Note that practice exams will only prepare you to develop the mindset of how AWS will ask questions - don't think that these will be exact set of questions.</li></ul><li><b>Tip#4 - Refer to AWS FAQ, User Guide & White Papers:</b></li><ul><li>You might get overwhelmed by this but here is my recommendation for FAQ:</li><ul><li><b>Must Read: </b><a href="https://aws.amazon.com/ec2/faqs/" target="_blank">EC2</a>, <a href="https://aws.amazon.com/autoscaling/faqs/" target="_blank">Autoscaling</a>, <a href="https://aws.amazon.com/elasticloadbalancing/faqs/" target="_blank">ELB</a>, <a href="https://aws.amazon.com/ebs/faqs/" target="_blank">EBS</a>, <a href="https://aws.amazon.com/efs/faq/" target="_blank">EFS</a>, <a href="https://aws.amazon.com/s3/faqs/" target="_blank">S3</a>, <a href="https://aws.amazon.com/vpc/faqs/" target="_blank">VPC</a>, <a href="https://aws.amazon.com/cloudfront/faqs/" target="_blank">Cloudfront</a>, <a href="https://aws.amazon.com/iam/faqs/" target="_blank">IAM</a>, <a href="https://aws.amazon.com/rds/faqs/" target="_blank">RDS</a> (specifically <a href="https://aws.amazon.com/rds/aurora/faqs/" target="_blank">Aurora</a>), <a href="https://aws.amazon.com/sqs/faqs/" target="_blank">SQS</a>, <a href="https://aws.amazon.com/sns/faqs/" target="_blank">SNS</a>, <a href="https://aws.amazon.com/ecs/faqs/" target="_blank">ECS</a>, <a href="https://aws.amazon.com/dynamodb/faqs/" target="_blank">DynamoDB</a>, <a href="https://aws.amazon.com/lambda/faqs/" target="_blank">Lambda</a>, <a href="https://aws.amazon.com/cloudwatch/faqs/" target="_blank">CloudWatch</a><br /><b></b></li><li><b>Nice to Read: </b><a href="https://aws.amazon.com/elasticbeanstalk/faqs/" target="_blank">Elastic Beanstalk</a>, <a href="https://aws.amazon.com/route53/faqs/" target="_blank">Route 53</a>, <a href="https://aws.amazon.com/api-gateway/faqs/" target="_blank">API Gateway</a>, <a href="https://aws.amazon.com/elasticache/faqs/" target="_blank">Elasticache</a>, <a href="https://aws.amazon.com/redshift/faqs/" target="_blank">Redshift</a>, <a href="https://aws.amazon.com/cloudhsm/faqs/" target="_blank">CloudHSM</a>, <a href="https://aws.amazon.com/kinesis/data-streams/faqs/" target="_blank">Kinesis</a>, <a href="https://aws.amazon.com/waf/faq/" target="_blank">WAF</a>, <a href="https://aws.amazon.com/athena/faqs/" target="_blank">Athena</a>, <a href="https://aws.amazon.com/cloudformation/faqs/" target="_blank">CloudFormation</a>, <a href="https://aws.amazon.com/eks/faqs/" target="_blank">EKS</a>, <a href="https://aws.amazon.com/cognito/faqs/" target="_blank">Cognito</a>, <a href="https://aws.amazon.com/directoryservice/faqs/" target="_blank">AWS Directory Service</a>, <a href="https://aws.amazon.com/cloudtrail/faqs/" target="_blank">CloudTrail</a><br /></li></ul><li>Refer to AWS product home pages if you are not able to go through all FAQs. For example, <a href="https://aws.amazon.com/kinesis/" target="_blank">Kinesis Home Page</a> lists all use-cases, key design patterns (of using data streams, difference between Firehose & Data Stream, etc.)</li><li>Refer to User Guide of following services (core of the exam) - if a particular area is not clear to you:</li><ul><li>Auto Scaling, EBS, EC2, VPC, S3, SQS, RDS<br /></li></ul></ul><li><b>Finally, </b><b>Tip#5 - Practice, Practice, Practice...</b></li><ul><li>Nothing can beat practicing & using AWS services even if you are experienced as you don't touch all required services on day-to-day basis.</li><li>Use <a href="https://aws.amazon.com/free/" target="_blank">AWS Free-tier</a> as much as possible or use <a href="https://aws.amazon.com/training/self-paced-labs/" target="_blank">AWS self-paced labs.</a></li><li>A trick I used, if certain services you don't want to pay for, is to go through all steps of launching the services but don't submit the final review form.<br /></li></ul></ul><div></div><div>Key success path for any certification is to put a target date (1-2 months of preparation) and focus on a daily basis to make consistent progress. <b>Don't over-prepare and don't procrastinate as well.</b><br /></div><div><br /></div><div>Best of Luck!!<br /></div><div><br /></div><div><span style="font-size: 14px;"><b style="font-size: medium;"><i><span style="background: white none repeat scroll 0% 0%; color: #333333; font-family: "times new roman"; font-size: 10pt;">Disclaimer:</span></i></b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br /></span><span style="background: white none repeat scroll 0% 0%; color: #333333; font-family: "times new roman"; font-size: 7.5pt;">All
data and information provided on this site is for informational
purposes only. This site makes no representations as to accuracy,
completeness, correctness, suitability, or validity of any information
on this site and will not be liable for any errors, omissions, or delays
in this information or any losses, injuries, or damages arising from
its display or use. All information is provided on an as-is basis.This
is a personal weblog. The opinions expressed here represent my own and
not those of my employer or any other organization.</span></span><span style="font-size: 14px;"><br /></span></div><div><br /></div><div><br /></div><div><br /></div></div>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com1tag:blogger.com,1999:blog-2368166884378082804.post-11610138072353564472020-04-16T11:17:00.001-07:002020-04-16T11:17:40.389-07:00Using Enterprise Architecture Framework (TOGAF) in an Agile Way<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">
<span data-preserver-spaces="true" style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">Ensuring your organization follows best practices, frameworks, tools & deliverables recommended by an Enterprise Architecture framework like TOGAF is a daunting task. Often, we start with high-energy and commitment but the journey to get it in practice in your organization is not an easy path.</span></div>
<div style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">
<span data-preserver-spaces="true" style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">A pragmatic & progressive way towards building an enterprise architecture capability is similar to Agile methodology where we build the product incrementally. Considering a similar mindset, we can incrementally build enterprise capability and every cycle of TOGAF ADM helps towards achieving the same.</span></div>
<div style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<blockquote class="tr_bq">
<div style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">
<span data-preserver-spaces="true" style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">Key idea is to identify the top 3 deliverables or artifacts relevant to your organization and also use TOGAF framework in conjunction with the Agile framework in practice. </span></div>
</blockquote>
<div style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">
<br /></div>
<div style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">
<span data-preserver-spaces="true" style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">Here is an example of going through various phases of TOGAF and brainstorm on identifying </span><b style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;"><i style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;"><span data-preserver-spaces="true" style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">Top 3 Deliverables as an output of the first cycle across various phases. </span></i></b></div>
<div style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;">
<b style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;"><i style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;"><span data-preserver-spaces="true" style="background: transparent; color: #0e101a; margin-bottom: 0pt; margin-top: 0pt;"><br /></span></i></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwWA0c5EOwcJSZil7adc5NKHR_3tXbz-VQQl0dM-MAnXxC84nf_JNJ-9CRAGV18K_dVpIZBNT7JfTjkJiUzJSzFMdTrpkpyGNxSv8xUQavD_YZxgarvTb44DYV-hHIjgwbFyPmQ1VD0Kby/s1600/TOGAF.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="901" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwWA0c5EOwcJSZil7adc5NKHR_3tXbz-VQQl0dM-MAnXxC84nf_JNJ-9CRAGV18K_dVpIZBNT7JfTjkJiUzJSzFMdTrpkpyGNxSv8xUQavD_YZxgarvTb44DYV-hHIjgwbFyPmQ1VD0Kby/s640/TOGAF.png" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
<br />
In conclusion, starting small and build on top of it is key to the success of getting enterprise architecture practice gets established in your organization.<br />
<br />
<i>Reference: </i><br />
<i><a href="https://pubs.opengroup.org/architecture/togaf9-doc/arch/">https://pubs.opengroup.org/architecture/togaf9-doc/arch/</a></i></div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com0tag:blogger.com,1999:blog-2368166884378082804.post-8351885033807367592020-03-04T20:36:00.000-08:002020-03-04T20:37:47.032-08:003 Key Metrics for Measuring Software Quality<div dir="ltr" style="text-align: left;" trbidi="on">
As a software architect, software quality is always on top of the
priority and we are measured by the quality we deliver. While we have
many tools to measure & control software quality, but before the how
part, the first step is to figure out what to measure for quality?<br />
<br />
In my experience and expertise, there are three dimensions of quality as part of delivering product/software:<br />
<ol style="text-align: left;">
<li><b>Build Quality: </b>Code quality meeting functional & non-functional requirements</li>
<li><b>Delivery
Quality:</b> Delivering Code does not always help; business/executive team
likes to measure success in terms of cost, time & quality</li>
<li><b>Functional Quality:</b> To ensure code propagated to production meets all testing nuances</li>
</ol>
For each of the dimensions, having a defined <i>"Quality Index"</i> based on metrics applicable for your organization or product helps to build and deliver a better quality product.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAiLmlgYCLataMHfrAepbBUF03o8Bw-j1Vm8OvLAPnkDDZQSMoplV6s_OCp4751WRwaleWuHw6IXgWA2JTanZTcsimZYjG6Wl7zHFY-szPXAwvZozlg_gU4pXnAqMA4BDn4NcZjQVk0mBf/s1600/Protips.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAiLmlgYCLataMHfrAepbBUF03o8Bw-j1Vm8OvLAPnkDDZQSMoplV6s_OCp4751WRwaleWuHw6IXgWA2JTanZTcsimZYjG6Wl7zHFY-szPXAwvZozlg_gU4pXnAqMA4BDn4NcZjQVk0mBf/s640/Protips.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<br />
Once the metrics have been defined, automating capturing/measuring
these metrics, monitoring regularly and acting based on the information
to improve iteratively helps to improve progressively.<br />
<br />
Based on above, Software Quality Index needs to be defined, measured and baselined for each product:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo0h5MvYlhO7kZ_PuB_kRnmTqh1IDtrMKFh45c2uYgdEwmpzDpq2YAtC5OOC2VCb2OnC9DIW645XhMuMNsslEg2Cwdm8W4cj7XOfQEklfV-qhDx-NI-fV8PDv51XB5h9eIq59k9N-gsbk8/s1600/2020-03-04+20_27_18-Mathcha.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="147" data-original-width="496" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjo0h5MvYlhO7kZ_PuB_kRnmTqh1IDtrMKFh45c2uYgdEwmpzDpq2YAtC5OOC2VCb2OnC9DIW645XhMuMNsslEg2Cwdm8W4cj7XOfQEklfV-qhDx-NI-fV8PDv51XB5h9eIq59k9N-gsbk8/s1600/2020-03-04+20_27_18-Mathcha.png" /></a></div>
<i>To conclude, strategy to define software quality is usually tailored for each organization & does not need to be an afterthought.</i></div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com2tag:blogger.com,1999:blog-2368166884378082804.post-59770629915277130152017-12-22T06:57:00.003-08:002017-12-22T07:09:01.727-08:00Emerging role of PaaS (Platform as a service) in building cloud-native applications<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="Style1">
<h3 style="text-align: left;">
<span style="color: blue;">Challenges & opportunities for cloud-native applications</span></h3>
</div>
<div class="MsoNormal">
<div style="text-align: left;">
<span lang="bg" style="font-family: inherit;">Current technology landscape for cloud-native apps is evolving and Platform-as-a-Service (PaaS) solutions are constantly changing to meet the demands such architecture. As customers need flexibility and openness in terms of choosing PaaS solution (without any vendor or technology lock-in), a key need is to provide a neutral view in terms of:</span></div>
<ul style="text-align: left;">
<li>Which PaaS solution is the right fit for my enterprise (considering unique opportunities and challenges in each enterprise)?</li>
<li>How does it help in realizing the vision of migrating toward cloud-native apps (with microservices as an architectural style of business services)?</li>
</ul>
</div>
<div class="MsoNormal">
The overarching problem of choosing the right technology solution & partner towards enterprise-level cloud-native apps creates an opportunity for all of us to innovate, build and implement the right-fit solution in a progressive manner.</div>
<div class="MsoNormal">
<span lang="bg" style="font-size: 10.5pt; mso-bidi-font-size: 10.0pt;"><br /></span></div>
<div class="MsoNormal">
<h3 style="text-align: left;">
<span style="color: blue;">Capabilities of Platform as a service for cloud-native applications</span></h3>
</div>
<div class="MsoNormal">
A reference architecture outlined below denotes the key set of capabilities required for building cloud-native apps and helps in choosing the right platform offering these capabilities:</div>
<div class="MsoNormal">
<span style="font-size: 14px;"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUvlm6jHSwAj8AMCqTI16jQGupqY-UhswpYaNcn9r66dYn1VSG4iqbVA2BsE3LgAE-EjRhcqHb85G3UO4ViHM-68rBaRRn9Sa0n3ky-NmRCszNhf1-MQpZ-B2LAIrOjkgigMZHf56YFv49/s1600/cloud-native-reference-arch.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="705" data-original-width="1347" height="334" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUvlm6jHSwAj8AMCqTI16jQGupqY-UhswpYaNcn9r66dYn1VSG4iqbVA2BsE3LgAE-EjRhcqHb85G3UO4ViHM-68rBaRRn9Sa0n3ky-NmRCszNhf1-MQpZ-B2LAIrOjkgigMZHf56YFv49/s640/cloud-native-reference-arch.jpg" width="640" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="MsoNormal">
<span style="font-size: 14px;"><br /></span></div>
<div class="MsoNormal">
<h3 style="text-align: left;">
<span style="color: blue;">Key platform as a service (PaaS) solution options</span></h3>
</div>
<div class="MsoNormal">
<a href="https://www.cloudfoundry.org/">CloudFoundry</a> & <a href="https://kubernetes.io/">Kubernetes</a> are great initiatives towards standardization of PaaS solutions but the consensus towards a standardized approach towards PaaS is still in an early stage.<br />
<br /></div>
<div class="MsoNormal">
Considering current market landscape with both serverless and other emerging trends, current PaaS solutions can be visualized as below (there are many variations coming out of options shown here by different vendors):</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqp6dKmtrPfSGO-3BP4Cec-VOqT18sL24iK-3Wb-6zCoMAEKv33C90f7xtHoGQQp1kFDu1IHuezFwLwTBXgybIb4rKOA9vMApQ7tmQnG5fF4KknMO4aazwVxZKtBqaMQRb0BlLKcQMhSI5/s1600/PaaS-Vendors.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="746" data-original-width="916" height="325" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjqp6dKmtrPfSGO-3BP4Cec-VOqT18sL24iK-3Wb-6zCoMAEKv33C90f7xtHoGQQp1kFDu1IHuezFwLwTBXgybIb4rKOA9vMApQ7tmQnG5fF4KknMO4aazwVxZKtBqaMQRb0BlLKcQMhSI5/s400/PaaS-Vendors.jpg" width="400" /></a></div>
<div class="MsoNormal">
<h3 style="text-align: left;">
<span style="color: blue;">Conclusion</span></h3>
</div>
<div style="text-align: left;">
<span style="font-size: 14px;">Cloud-native apps development is an evolving field and considering the novelty of the solution, industry players and standards bodies (such as IEEE) are still firming up standards and best practices. As there is no silver bullet in choosing any solution and <b>enterprise context, governance and required capabilities </b>drive the recommended platform as a service (PaaS) solution in supporting cloud-native applications. </span><br />
<span style="font-size: 14px;"><br /></span> <span style="font-size: 14px;"><b style="font-size: medium;"><i><span style="background: white; color: #333333; font-family: "times new roman"; font-size: 10pt;">Disclaimer:</span></i></b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br /></span><span style="background: white; color: #333333; font-family: "times new roman"; font-size: 7.5pt;">All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, correctness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.</span></span><br />
<span style="font-size: 14px;"><br /></span> <span style="font-size: 14px;"><br /></span></div>
</div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com38tag:blogger.com,1999:blog-2368166884378082804.post-50950797603811043242017-09-20T06:12:00.002-07:002017-09-20T06:12:51.484-07:00NGINX | Big leap towards cloud-native application platform from a high-performance web-server<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">NGINX has recently (Sep 6-8) organized </span><a data-mce-href="https://www.nginx.com/nginxconf/" data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" href="https://www.nginx.com/nginxconf/" style="color: #2989c5; font-family: "Helvetica Neue"; font-size: 10.5pt; text-decoration-line: none;">NGINX Conference 2017</a><span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;"> in Portland (OR) and would like to highlight some of the key announcements made by NGINX experts in this blog. There is a paradigm shift by NGINX in recent years of offering a comprehensive application platform for <strong>Cloud-native </strong></span>Microservices<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;"> not just a high-performance web server and the same message has been consistently delivered in this conference.</span></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<br /></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">NGINX CTO (Igor Sysoev) announced their aggressive strategy to move beyond web server and offer a unique application platform for <strong>cloud-native microservice application platform</strong> with the same level of high performance. Also, it is supported by almost all major cloud vendors in the market today - <strong>AWS, Azure, OpenShift, GCP,</strong> etc.</span></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;"><br /></span></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">As per <a data-mce-href="https://w3techs.com/technologies/details/ws-nginx/all/all" href="https://w3techs.com/technologies/details/ws-nginx/all/all" style="color: #2989c5; text-decoration-line: none;">w3tech figures</a>, <span data-mce-style="text-decoration: underline;" style="text-decoration-line: underline;"><strong>NGINX is now #1 web-server for 1 million busiest sites</strong></span> in the world. NGINX has achieved this only 5 years and it is a great achievement for opensource community.</span></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">Also, a lightweight technology like NGINX to support challenging demands of Microservices (such as monitoring, high performance, hot deployment, lightweight containers, less/zero maintenance, etc.) has been highlighted and a similar approach will be extended to the new application platform.</span></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;"><br /></span></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">The overall application platform has 3 key components:</span></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<br /></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;"><strong>1. NGINX Controller</strong></span></div>
<ul style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; margin: 0px; padding: 0px 0px 0px 30px;">
<li style="margin: 0.2em 0px; padding: 0px;"><span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">Security using RBAC (load balancing config by app owners, self-control).</span></li>
<li style="margin: 0.2em 0px; padding: 0px;"><span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">Centralized traffic management (routing, push button LB addition, upstream servers management, SSL keys management).</span></li>
<li style="margin: 0.2em 0px; padding: 0px;"><span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">Centralized monitoring (application metrics, requests per sec, bandwidth usage, consolidated dashboard).</span></li>
</ul>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<br /></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;"><strong>2. NGINX Unit</strong></span></div>
<ul data-mce-style="list-style-type: disc;" style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; margin: 0px; padding: 0px 0px 0px 30px;">
<li style="margin: 0.2em 0px; padding: 0px;"><span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">A brand new lightweight open-source application server.</span></li>
<li style="margin: 0.2em 0px; padding: 0px;"><span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">Unique in the industry to support multiple languages in one application server.</span></li>
<li style="margin: 0.2em 0px; padding: 0px;"><span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;">Current beta version supports Python, PHP & Go. Java & NodeJs support to be available soon.</span></li>
</ul>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<br /></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;"><strong>3. NGINX/NGINX Plus Web Server</strong></span></div>
<ul style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; margin: 0px; padding: 0px 0px 0px 30px;">
<li style="margin: 0.2em 0px; padding: 0px;">High-performance web server, which is the backbone of the entire application platform.</li>
</ul>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<br /></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<span data-mce-style="font-size: 10.5pt; font-family: 'Helvetica Neue';" style="font-family: "helvetica neue"; font-size: 10.5pt;"></span></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
In conclusion, big aspirations by NGINX as a company to move forward aggressively towards establishing themselves as a cloud-native platform. Keep watching NGINX!!</div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<br /></div>
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<b><i>References:</i></b></div>
<div style="padding: 0px;">
</div>
<ul style="text-align: left;">
<li><span style="color: #3d3d3d; font-family: "helvetica neue" , "helvetica" , "arial" , "lucida grande" , sans-serif;"><span style="font-size: 14px;">NGINX Application Platform - <a href="https://www.nginx.com/blog/introducing-nginx-application-platform">https://www.nginx.com/blog/introducing-nginx-application-platform</a></span></span></li>
<li><span style="color: #3d3d3d; font-family: "helvetica neue" , "helvetica" , "arial" , "lucida grande" , sans-serif;"><span style="font-size: 14px;">NGINX Unit - <a href="https://www.nginx.com/products/nginx-unit/">https://www.nginx.com/products/nginx-unit/</a></span></span></li>
</ul>
<br />
<div style="color: #3d3d3d; font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif; font-size: 14px; padding: 0px;">
<br /></div>
</div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com7tag:blogger.com,1999:blog-2368166884378082804.post-50650062682830531562017-03-18T01:07:00.000-07:002017-03-19T08:46:07.491-07:005 Key Takeaways from Google Cloud Next '17 Keynote Session<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;">Technology helps in diminishing physical boundaries and watching <a href="https://cloudnext.withgoogle.com/">Google Cloud Next 2017</a> keynote session on my TV through YouTube was a great example to prove this theory.</span><br />
<br /></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;">Cloud has been at the top of CxO's priority list and technology events such as </span><a href="https://aws.amazon.com/new/reinvent/" style="font-family: verdana, sans-serif;">AWS's re:Invent</a><span style="font-family: "verdana" , sans-serif;"> and </span><a href="https://news.microsoft.com/build2016/" style="font-family: verdana, sans-serif;">Microsoft's Build 201</a>6 <span style="font-family: "verdana" , sans-serif;">re-emphasized Cloud's perseverance. Google's Cloud Next 2017 continues the trend and here are </span><span style="font-family: "verdana" , sans-serif; text-align: left;">key takeaways from</span><span style="font-family: "verdana" , sans-serif; text-align: left;"> Google Cloud Next's </span><a href="https://www.youtube.com/watch?v=j_K1YoMHpbk&index=1&list=PLIivdWyY5sqI8RuUibiH8sMb1ExIw0lAR" style="font-family: verdana, sans-serif; text-align: left;">Keynote on Day 1</a><span style="font-family: "verdana" , sans-serif; text-align: left;">:</span><br />
<br /></div>
<span style="font-family: "verdana" , sans-serif;"><b>#1 - G-Suite adoption by key industry players in quick time</b></span><br />
<span style="font-family: "verdana" , sans-serif; text-align: justify;">Google highlighted the adoption of </span><a href="https://gsuite.google.com/" style="font-family: verdana, sans-serif; text-align: justify;">G-Suite (Gmail, Docs, Drive, Calendar</a><span style="font-family: "verdana" , sans-serif; text-align: justify;">) by business powerhouses such as Colgate-Palmolive and Verizon and very excited to point that with good planning, it can be achieved in the timeframe of 3-6 months. </span><br />
<blockquote class="tr_bq">
<span style="font-family: "verdana" , sans-serif;"><i>"Google challenges old notions and showcases that it is possible to move large-scale infrastructure in months as against multi-year approaches."</i></span></blockquote>
<span style="font-family: "verdana" , sans-serif;">A quick Google Search reveals that Colgate & Verizon has migrated 28K users & 150K users respectively in months. Read more by <a href="https://www.itnews.com.au/news/colgate-verizon-in-mass-g-suite-migrations-454028">clicking here.</a></span><br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYlCdwWNc8OZ7-gUS7EQ-WoMnIbZe9PcXG0uWSjWGieBYBXXupU2cb_DFTrMhLtHxOI5pWIdLx9S795NfOU9pCnxV29OThPLxfIG3AdpgGBSVkmRcty0JIvy7kJyUAq2A0w9rAwC91yDq_/s1600/g-suite.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="149" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYlCdwWNc8OZ7-gUS7EQ-WoMnIbZe9PcXG0uWSjWGieBYBXXupU2cb_DFTrMhLtHxOI5pWIdLx9S795NfOU9pCnxV29OThPLxfIG3AdpgGBSVkmRcty0JIvy7kJyUAq2A0w9rAwC91yDq_/s400/g-suite.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">G-Suite Solution</td></tr>
</tbody></table>
<b style="font-family: verdana, sans-serif;"><br />#2 - Cloud is an incredible & cool place where everybody wants to go</b><br />
<span style="font-family: "verdana" , sans-serif;"> </span>
<br />
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;">Google highlighted their Cloud capabilities with examples such as <a href="https://www.planet.com/">Customer Planet Labs</a>, which takes picture of Earth every 3 hours and stores in Google Cloud.</span></div>
<br />
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;">With increased security, 99.999% up-time, scalability, faster time-to-market, competitive pricing and flexibility, Google Cloud is a promising future and will be putting itself in elite category very soon.</span></div>
<br />
<b style="font-family: verdana, sans-serif;">#3 - Future is Fast Data, Analytics, AI, Deep & Machine Learning</b><br />
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;"><a href="https://shopbot.ebay.com/">EBay ShopBot</a>, which uses AI, deep learning (beyond machine learning), computer vision and natural language understanding to create a great technical differentiator.</span></div>
<br />
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;">Fei-Fei Li (Chief Scientist at Google Cloud AI) talked about many such experiences (such as the scale of thousands of people having their own self-driving cars, using AI to improve the quality of human life). </span></div>
<div style="text-align: justify;">
<span style="font-family: "verdana" , sans-serif;">Demo of <a href="https://cloud.google.com/vision/">Cloud Vision API</a> was awesome, which extends capabilities from image to video analysis using video intelligence API. </span></div>
<b style="font-family: verdana, sans-serif;"><br /></b> <b style="font-family: verdana, sans-serif;">#4 - Key industry players put faith in Google Cloud</b><br />
<span style="font-family: "verdana" , sans-serif;">Google invited their esteemed clients to talk about their experience with Google and their passion was contagious.</span><br />
<ul style="text-align: left;">
<li style="text-align: justify;"><span style="font-family: "verdana" , sans-serif;"><b>EBay</b> - R.J. Pitman talked about Google Home example (along with live demo) as integration with EBay product catalog to find information about products using voice-commands. </span></li>
<li style="text-align: justify;"><span style="font-family: "verdana" , sans-serif;"><b>HSBC</b> - Darryl W (Global CIO) shared their Cloud & Cloud-scale data analytics (over 100 PB of data with large computing needs to do simulations) and their plan to movement towards GCP.</span></li>
<li style="text-align: justify;"><span style="font-family: "verdana" , sans-serif;"><b>Disney</b> - Mike W. (CTO) talked about their Cloud-first approach with 500 projects in Cloud involving Image Recognition, Personalization, etc,</span></li>
<li style="text-align: justify;"><span style="font-family: "verdana" , sans-serif;"><b>SAP</b> - Talked about SAP HANA (in-memory product), which is now available on GCP. SAP Cloud Platform (uses Cloud Foundry) chose GCP over other vendors considering scalability support & containerization.</span></li>
<li style="text-align: justify;"><span style="font-family: "verdana" , sans-serif;"><b>Verizon</b> - Alan D. (VP) talked about G-Suite usage for the 150K workforce.</span></li>
<li style="text-align: justify;"><span style="font-family: "verdana" , sans-serif;"><b>Colgate-Palmolive</b> - Mike C. (CIO) talked about using G-Suite for collaboration & workspace productivity.</span></li>
<li style="text-align: justify;"><span style="font-family: "verdana" , sans-serif;">Home Depot - Paul G (SVP) talked about moving from on-premises to Cloud along particularly data analytics environment.</span></li>
</ul>
<br />
<span id="goog_1419210669"></span><b style="font-family: verdana, sans-serif;">#5 - Better uses of money...Eric Schmidt</b><br />
<span style="font-family: "verdana" , sans-serif;">And, finally Eric S. pointed out that Google put $30B in infrastructure and we should not try to replicate the same and use the money to better use. In his own words:</span><br />
<blockquote class="tr_bq">
<i>"We put thirty billion dollars - and I know because I approved it. So it's real, right, into this platform. Please do not attempt to duplicate it.You have better uses of your money. - Eric S."</i></blockquote>
<div style="text-align: justify;">
<br />
<span style="font-family: "verdana" , sans-serif;">To conclude, an exciting time ahead in Cloud marketplace with Google launching differentiating <a href="http://cloud.google.com/products/">GCP capabilities</a> in competition with <a href="http://aws.amazon.com/products/">Amazon's AWS</a> and <a href="http://azure.microsoft.com/en-in/services/">Microsoft's Azure</a>. Google's cloud roadmap looks very promising and its brand in terms of <i>scalability, reliability, and availability </i>makes Google Cloud Platform a very compelling option. Personally, I believe Google's offering in <i>Big Data, Machine Learning, and AI-related services</i> seems to be their core competence in a highly competitive Cloud marketplace.</span></div>
<div style="text-align: justify;">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #454545}
</style></div>
<style type="text/css"> p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #454545} span.s1 {color: #e4af09} </style></div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com6tag:blogger.com,1999:blog-2368166884378082804.post-9239281926258416682016-11-22T04:36:00.004-08:002016-11-22T05:12:41.869-08:00Why In-memory computing plays an important role in Microservices Architecture?<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal">
<span style="color: black;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Microservices is the new architecture paradigm
everyone is talking about, but it comes with its own set of complexities. As our industry gets more matured about using Microservices architecture, one of the key learnings coming out as:<o:p></o:p></span></span></div>
<blockquote class="tr_bq">
<b><i><span style="color: black;"><span style="font-family: "arial" , "helvetica" , sans-serif;">The outer architectural
building blocks are playing far more important role than the inner
architecture of each microservice itself.</span></span></i></b></blockquote>
<div class="MsoNormal">
<span style="color: black;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">I will be sharing my perspective on microservices' outer architectural building blocks <i>(In-memory computing
& caching, API Gateway, Containers, DevOps & Cloud Computing)</i> in a series of upcoming blog posts. This blog post is focused on <b>"in-memory computing technology", </b>which plays an important role in microservices architecture<b>.</b><o:p></o:p></span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: black;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">In-memory computing, in itself, is a vast
technology domain but in the context of microservices architecture, I would
like to keep it focused on following solution offerings:<o:p></o:p></span></span></div>
<ul type="disc">
<li class="MsoNormal" style="color: black; mso-list: l2 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b>In-memory database - </b>a database system primarily
residing in memory (SQL or NOSQL).<o:p></o:p></span></li>
<li class="MsoNormal" style="color: black; mso-list: l2 level1 lfo1; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b>In-memory data grid - </b>distributed computing based caching
system usually having KV (key-value) storage.</span></li>
</ul>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b><span style="color: black;"><br /></span></b></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b><span style="color: black;">In-memory database (IMDB)</span></b><span style="color: black;"><o:p></o:p></span></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><span style="color: black;">In-memory database plays a collaborative role in
microservices architecture as usually it can be deployed</span><span style="color: black;"> independently and
provides highly efficient storage support to microservices. </span></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><span style="color: black;"><br /></span></span>
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><span style="color: black;"><i>Note that to
sustain data stored in in-memory database during deployments, a backup approach
with file-system based storage is required.</i><o:p></o:p></span></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: black;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">These are following key design patterns, which
can be applied in the context of in-memory database:<o:p></o:p></span></span></div>
<ul type="disc">
<li class="MsoNormal" style="color: black; mso-list: l1 level1 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i>Pattern A - IMDB per microservice,
where each microservice having its own storage</i><o:p></o:p></span></li>
<ul type="circle">
<li class="MsoNormal" style="color: black; mso-list: l1 level2 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Applicability: Greenfield
development where you have opportunity to do microservices based
architecture first<o:p></o:p></span></li>
<li class="MsoNormal" style="color: black; mso-list: l1 level2 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Pros: Independent (inclusive of
deployment flexibility) & completely in adherence to microservices
principles<o:p></o:p></span></li>
<li class="MsoNormal" style="color: black; mso-list: l1 level2 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Cons: Duplication of data across
services<o:p></o:p></span></li>
</ul>
<li class="MsoNormal" style="color: black; mso-list: l1 level1 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i>Pattern B - IMDB as a shared
component across multiple Microservices having common storage</i><o:p></o:p></span></li>
<ul type="circle">
<li class="MsoNormal" style="color: black; mso-list: l1 level2 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Applicability: Brownfield
development where you are on a path to refactor monolith application to
microservices<o:p></o:p></span></li>
<li class="MsoNormal" style="color: black; mso-list: l1 level2 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Pros: Practical approach when you
have shared data across services<o:p></o:p></span></li>
<li class="MsoNormal" style="color: black; mso-list: l1 level2 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Cons: Not completely aligned with
Microservices principles<o:p></o:p></span></li>
</ul>
<li class="MsoNormal" style="color: black; mso-list: l1 level1 lfo2; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i>Pattern C - Hybrid of Pattern A or
B (some microservices having shared database)</i><o:p></o:p></span></li>
</ul>
<div class="MsoNormal">
<br /></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><img border="0" height="312" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv0hgfu05P4w8B_Ss9hJ-xyNilOrT4p8C7J8IyR10TtM9IBVJf96QxGFDiPym22l_2KfuJPL-9lHuTZTXYBl7gSNjbKNxV3ZX3-a8hmkYTOZEuU6piVUGvyRJCRIItPzY4RfpveTupqru0/s640/Microservice+Copy+%25281%2529.jpg" style="margin-left: auto; margin-right: auto;" width="640" /></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Microservices Architecture - In-memory database design patterns</td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhv0hgfu05P4w8B_Ss9hJ-xyNilOrT4p8C7J8IyR10TtM9IBVJf96QxGFDiPym22l_2KfuJPL-9lHuTZTXYBl7gSNjbKNxV3ZX3-a8hmkYTOZEuU6piVUGvyRJCRIItPzY4RfpveTupqru0/s1600/Microservice+Copy+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><span style="font-family: "arial" , "helvetica" , sans-serif;"></span></a></div>
<div class="MsoNormal">
<o:p><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br /></span></o:p></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b>In-memory
data grid (IMDG)</b><o:p></o:p></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">In-memory data
grid relies on distributed computing using clustering as underlying approach
and provides a shared component (grid) for CRUD operations using memory.<o:p></o:p></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">As microservices
architecture recommends independent deployable units with minimal shared data,
in-memory data grid is not completely aligned to this architectural approach.
However, in-memory grid products can provide independent cache nodes to
respective microservice with variation of distributed cluster to store backup
data in the grid.<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">In nutshell,
conceptually these are different approaches:<o:p></o:p></span></div>
<ul type="disc">
<li class="MsoNormal" style="mso-list: l0 level1 lfo3; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Microservices
architecture - It promotes independence and less dependency for linear
scalability (cluster of instances of microservice but clustering at layer level is not recommended).<o:p></o:p></span></li>
<li class="MsoNormal" style="mso-list: l0 level1 lfo3; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">In-memory
data grid - It relies on cluster of nodes (data layer) for horizontal
scalability (nodes can be added/removed on need basis for scalability).</span></li>
</ul>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Because of the
above reason, vendor like Oracle has started their cloud roadmap with less
emphasis on Oracle Coherence for microservices architecture and more on cloud
based offering for Cache-as-a-service, which can be easily integrated with microservices Architecture. However, this is also similar to common grid
solution with variance that cloud is now playing the common grid. Also,
In-memory grid solution is still relevant and playing its role behind the scenes
(to support cloud's cache-as-a-service). <o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">From
applicability perspective, following patterns can be leveraged for microservices architecture along with in-memory datagrid solution:<o:p></o:p></span></div>
<ul type="disc">
<li class="MsoNormal" style="mso-list: l3 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i>Pattern A -
In-memory data grid as event/messages store</i><o:p></o:p></span></li>
<ul type="circle">
<li class="MsoNormal" style="mso-list: l3 level2 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Applicability:
Primarily for inter-microservice communication, this pattern can be
leveraged.<o:p></o:p></span></li>
</ul>
<li class="MsoNormal" style="mso-list: l3 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i>Pattern B -
In-memory data grid as shared data</i><o:p></o:p></span></li>
<ul type="circle">
<li class="MsoNormal" style="mso-list: l3 level2 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Applicability:
To store shared data such as backend system response (cached data),
response data, content data, etc.<o:p></o:p></span></li>
</ul>
<li class="MsoNormal" style="mso-list: l3 level1 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 36.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i>Pattern C -
In-memory data grid as storage</i><o:p></o:p></span></li>
<ul type="circle">
<li class="MsoNormal" style="mso-list: l3 level2 lfo4; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 72.0pt;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;">Applicability:
To store data in grid for a microservice and use partition approaches to
separate data for each microservice</span></li>
</ul>
</ul>
<div class="MsoNormal">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><br /></span></div>
<div class="MsoNormal" style="text-align: justify;">
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><i>To conclude,
in-memory computing plays a significant role for Microservices architecture as
an underlying storage mechanism for each microservice. Also, in-memory grid
computing offers an alternative solution, which respects microservice's
principle of independence up to certain extent and provides a out-of-the-box
solution to solve inter-communication & storage challenges for microservice
architecture.</i><o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<span style="color: black;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b><i>References</i></b>: <o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="color: black;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><a href="https://www.forrester.com/report/The+Forrester+Wave+Big+Data+NoSQL+Q3+2016/-/E-RES125643"><span style="color: blue;">https://www.forrester.com/report/The+Forrester+Wave+Big+Data+NoSQL+Q3+2016/-/E-RES125643</span></a><o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="color: black;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><a href="https://www.gartner.com/doc/3467318/magic-quadrant-operational-database-management"><span style="color: blue;">https://www.gartner.com/doc/3467318/magic-quadrant-operational-database-management</span></a><o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="color: black;"><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><a href="https://en.wikipedia.org/wiki/List_of_in-memory_databases"><span style="color: blue;">https://en.wikipedia.org/wiki/List_of_in-memory_databases</span></a><o:p></o:p></span></span></div>
<div class="MsoNormal">
<br /></div>
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="381">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" Priority="0" SemiHidden="true"
UnhideWhenUsed="true" Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 9"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Mention"/>
</w:LatentStyles>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:"Courier New";
panose-1:2 7 3 9 2 2 5 2 4 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-536859905 -1073711037 9 0 511 0;}
@font-face
{font-family:Times;
panose-1:2 0 5 0 0 0 0 0 0 0;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 0 0 0 1 0;}
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;
mso-font-charset:2;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-536870145 1107305727 0 0 415 0;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;
mso-font-charset:0;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:-536870145 1073786111 1 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-unhide:no;
mso-style-qformat:yes;
mso-style-parent:"";
margin:0cm;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
.MsoChpDefault
{mso-style-type:export-only;
mso-default-props:yes;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-fareast-font-family:Calibri;
mso-fareast-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:72.0pt 72.0pt 72.0pt 72.0pt;
mso-header-margin:35.4pt;
mso-footer-margin:35.4pt;
mso-paper-source:0;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:783113902;
mso-list-template-ids:729053590;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l0:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l0:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l0:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1
{mso-list-id:1028795443;
mso-list-template-ids:-1330744454;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l1:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l1:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2
{mso-list-id:1358039533;
mso-list-template-ids:298202768;}
@list l2:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l2:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l2:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3
{mso-list-id:1736508002;
mso-list-template-ids:749394612;}
@list l3:level1
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:36.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l3:level2
{mso-level-number-format:bullet;
mso-level-text:o;
mso-level-tab-stop:72.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:"Courier New";
mso-bidi-font-family:"Times New Roman";}
@list l3:level3
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:108.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level4
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:144.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level5
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:180.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level6
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:216.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level7
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:252.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level8
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:288.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
@list l3:level9
{mso-level-number-format:bullet;
mso-level-text:;
mso-level-tab-stop:324.0pt;
mso-level-number-position:left;
text-indent:-18.0pt;
mso-ansi-font-size:10.0pt;
font-family:Wingdings;}
ol
{margin-bottom:0cm;}
ul
{margin-bottom:0cm;}
</style>
<br />
-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<!--StartFragment-->
<!--EndFragment--><br />
<div class="MsoNormal">
<o:p><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b><u> In-memory database & In-memory data grid solutions</u></b></span></o:p></div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZRD7U0UptM4TadJ9cKCRcpx9aDHxNFGDi9ofka641d4ltEs_twN5SH7GKYrEpfOTHNSIhAzgp1UO2OhH2ZXjXjcpOZ-ozPnbIocHHpHcWWYBzzOz7HtCVV20QR2Hhocc_V1eHJSC3zT6t/s1600/imdg.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="424" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjZRD7U0UptM4TadJ9cKCRcpx9aDHxNFGDi9ofka641d4ltEs_twN5SH7GKYrEpfOTHNSIhAzgp1UO2OhH2ZXjXjcpOZ-ozPnbIocHHpHcWWYBzzOz7HtCVV20QR2Hhocc_V1eHJSC3zT6t/s640/imdg.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">In-memory database & In-memory data-grid solutions</td></tr>
</tbody></table>
<div class="MsoNormal">
<o:p><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: small;"><b><br /></b></span></o:p></div>
</div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com9tag:blogger.com,1999:blog-2368166884378082804.post-73275180927317765342016-03-24T09:30:00.000-07:002016-05-09T17:06:11.567-07:005 Skills A Software Developer Should Have To Be A Smart Developer<div dir="ltr" style="text-align: left;" trbidi="on">
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="380">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 9"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<!--StartFragment-->
<!--EndFragment--><br />
<div class="MsoNormal" style="margin-bottom: 12.0pt;">
<span style="background: white; color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">A
software developer in any project plays a very critical role in realizing
architecture & design. Current modern architecture world needs modern or
smart developers, where they should possess pragmatic skills. <b><i>Being
Aware, Being Social & Being Smart</i></b> is what world is looking
forward to.</span><span style="font-family: "times new roman"; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></div>
<div class="MsoNormal" style="text-align: center;">
<b><i><span style="background: white; color: #073763; font-family: "helvetica neue"; font-size: 11.5pt;">Smart Developer is the need of the hour</span></i></b><span style="font-family: "times new roman"; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx5fsoNeMgouc_v4EKj0Vp6O1CjJoqB-rfRiRaVVMZyX2m8F-NWBtfvrXP_fdKBFMxGiqOUoAh9lNN0DHwz1R_vukEavO-iC8-UU9Ehl7khcDCXxTHkMYVl6K90HrUmThTaVc8dDG1KOjB/s1600/Slide1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgx5fsoNeMgouc_v4EKj0Vp6O1CjJoqB-rfRiRaVVMZyX2m8F-NWBtfvrXP_fdKBFMxGiqOUoAh9lNN0DHwz1R_vukEavO-iC8-UU9Ehl7khcDCXxTHkMYVl6K90HrUmThTaVc8dDG1KOjB/s640/Slide1.jpg" width="640" /></a></div>
<div class="MsoNormal">
<span style="background: white; color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">So, how do we define a smart developer? 5 key
areas, which can make a developer a <b>smart developer:</b></span><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br style="mso-special-character: line-break;" /></span></div>
<div class="MsoNormal">
<span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br /></span></div>
<div class="MsoNormal" style="background: white; margin: 0cm 0cm 3pt; text-indent: 0cm;">
</div>
<ul style="line-height: 16.15pt; text-align: left;">
<li><b style="line-height: 16.15pt; text-indent: 0cm;"><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Ability to be focused & goal oriented</span></b></li>
</ul>
<span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt; line-height: 16.15pt; text-indent: 0cm;">It starts with introspection and planning for your career. You
can think of an approach as you take for your code:</span><br />
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l1 level3 lfo1; tab-stops: list 108.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "wingdings"; font-size: 10.0pt;"><span style="mso-list: Ignore;">§<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Keep it modular -</span></b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"> Personal,
professional - both aspects need to be well-thought of and your TODOs (like in
code), needs to be taken care of on regular basis.<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l1 level3 lfo1; tab-stops: list 108.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "wingdings"; font-size: 10.0pt;"><span style="mso-list: Ignore;">§<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Keep it clean & comply with rules -</span></b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"> As
we follow coding compliance rules, some rules for yourself and keep your
objectives very clean and measurable<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l1 level3 lfo1; tab-stops: list 108.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "wingdings"; font-size: 10.0pt;"><span style="mso-list: Ignore;">§<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Keep it loosely coupled -</span></b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"> Like
your code, don't couple many objectives together - keep it simple and flexible
so that they can vary independently.<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l1 level3 lfo1; tab-stops: list 108.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "wingdings"; font-size: 10.0pt;"><span style="mso-list: Ignore;">§<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Keep it measurable </span></b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">- Like
your code performance SLA, keep your objectives SLA based and measure it every
fortnightly/monthly/quarterly/yearly as frequent as possible.<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l1 level3 lfo1; tab-stops: list 108.0pt; text-indent: 0cm;">
<span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br /></span></div>
<div class="MsoNormal" style="background: white; line-height: 16.15pt; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt; text-indent: 0cm;">
</div>
<ul style="text-align: left;">
<li><b style="line-height: 16.15pt; text-indent: 0cm;"><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Ability to market & sell your idea</span></b></li>
</ul>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">This is the most ignored aspect and the most difficult part. As
you grow, your ideas need to be told and to be executed and in order to that,
first thing is you need to sell your ideas to people. <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Storytelling is a well-known technique to convey your thoughts
in a way anybody can understand.<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin: 0cm 0cm 3pt; text-indent: 0cm;">
<span style="color: #333333; font-family: "courier new"; font-size: 13.3333px;">o</span><span style="color: #333333; font-family: "times new roman"; font-size: 7pt; font-stretch: normal;"> </span><span style="color: #333333; font-family: "courier new"; font-size: 10pt;"><span style="font-family: "times new roman"; font-size: 7pt; font-stretch: normal;"> </span></span><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">SapientNitro has redefined Storytelling to Storyscaping, which is a new way to tell powerful stories with connected experiences (used in marketing). This can be applied in usual storytelling as well.</span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br /></span></div>
<div class="MsoNormal" style="background: white; line-height: 16.15pt; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt; text-indent: 0cm;">
</div>
<ul style="text-align: left;">
<li><b style="line-height: 16.15pt; text-indent: 0cm;"><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Ability to increase your productivity</span></b></li>
</ul>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">A constant effort & thought process to come up with new
& improved ways to do things. A simple example - <i>a Jmeter script to
do unit-level performance test and reduce cost of quality by detecting any
issues earlier.</i><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Share your knowledge with team (in the form of blog or
webinars). It helps to improve productivity of entire team and also an
opportunity to get feedback from others.<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br /></span></div>
<div class="MsoNormal" style="background: white; line-height: 16.15pt; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt; text-indent: 0cm;">
</div>
<ul style="text-align: left;">
<li><b style="line-height: 16.15pt; text-indent: 0cm;"><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Ability to keep up with learning</span></b></li>
</ul>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">By reading blogs from leading tech companies (<a href="http://techblog.netflix.com/"><span style="color: #888888; text-decoration: none;">Netflix Tech Blog</span></a>,<a href="http://www.oracle.com/technetwork/index.html"><span style="color: #888888; text-decoration: none;">Oracle OTN</span></a>, <a href="https://aws.amazon.com/blogs/aws/"><span style="color: #888888; text-decoration: none;">AWS Blogs, </span></a>I<a href="http://blog.ibmjstart.net/"><span style="color: #888888; text-decoration: none;">BM Emerging Tech Blog</span></a>, <a href="https://dzone.com/"><span style="color: #888888; text-decoration: none;">DZone</span></a>, <a href="http://www.techgig.com/"><span style="color: #888888; text-decoration: none;">TechGig</span></a>,<a href="http://techcrunch.com/tag/blogs/"><span style="color: #888888; text-decoration: none;">TechCrunch</span></a>),<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Through developer wsebsite of tech companies (such as <a href="https://developers.facebook.com/"><span style="color: #888888; text-decoration: none;">Facebook for Developers</span></a>, <a href="https://dev.twitter.com/"><span style="color: #888888; text-decoration: none;">Twitter Developers</span></a>, <a href="https://aws.amazon.com/"><span style="color: #888888; text-decoration: none;">Amazon AWS</span></a>, <a href="https://developers.facebook.com/"><span style="color: #888888; text-decoration: none;">Facebook for developers</span></a>)<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Asking questions on question-answer websites (such as <a href="https://www.quora.com/topic/Technology"><span style="color: #888888; text-decoration: none;">Quora</span></a>, <a href="http://stackoverflow.com/"><span style="color: #888888; text-decoration: none;">Stackoverflow</span></a>)<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Learning through MOOC sites (<a href="https://www.coursera.org/courses?categories=infotech"><span style="color: #888888; text-decoration: none;">Coursera</span></a>, <a href="https://www.udemy.com/"><span style="color: #888888; text-decoration: none;">Udemy</span></a> etc.) or Youtube channels<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<!--[if !supportLists]--><span style="color: #333333; font-family: "courier new"; font-size: 10.0pt;"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span><!--[endif]--><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">Finally, by following key technology people/companies on social
media channels (Twitter, LinkedIn, etc.).<o:p></o:p></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGiqLkIUtsVXemYvfej9MzoaOQZ9h65Oa4ndEGcH8EvIHZ-ifs-OMDWSVa1_hkk3wZg9G_GQPEOijquoiXPz4vfzJz3i9Cj63k7XMiVxgRAqWYa648gA4Ecc8L-0qfUKtkUuMgrxbO0Xvs/s1600/TechCompanies.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="246" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjGiqLkIUtsVXemYvfej9MzoaOQZ9h65Oa4ndEGcH8EvIHZ-ifs-OMDWSVa1_hkk3wZg9G_GQPEOijquoiXPz4vfzJz3i9Cj63k7XMiVxgRAqWYa648gA4Ecc8L-0qfUKtkUuMgrxbO0Xvs/s400/TechCompanies.jpg" width="400" /></a></div>
<div class="MsoNormal" style="background: white; margin-bottom: 3.0pt; margin-left: 0cm; margin-right: 0cm; margin-top: 0cm; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt; text-indent: 0cm;">
<span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br /></span></div>
<ul style="margin-top: 0cm; text-align: left;" type="disc">
<li class="MsoNormal" style="background: white; color: #333333; line-height: 16.15pt; margin-bottom: 3.0pt; mso-list: l0 level1 lfo2; tab-stops: list 36.0pt;"><b><span style="font-family: "helvetica neue"; font-size: 11.5pt;">Ability to keep
a healthy mind, body & soul</span></b><span style="font-family: "helvetica neue"; font-size: 11.5pt;"><o:p></o:p></span></li>
<ul style="margin-top: 0cm;" type="circle">
<li class="MsoNormal" style="background: white; color: #333333; margin-bottom: 3.0pt; mso-list: l0 level2 lfo2; tab-stops: list 72.0pt;"><span style="font-family: "helvetica neue"; font-size: 11.5pt;">The most important one as it
keeps up the spirit and make sure we have fresh & healthy mind to
counter any challenge and come up with innovative ways to do things.</span></li>
</ul>
</ul>
<span style="color: #333333; font-family: helvetica neue;"><span style="font-size: 15.3333px;">In conclusion, these 5 skill-sets can help being more successful in today's demanding culture with dynamic & fast changing technology world.</span></span><div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1y57e-8yJBakDytxBZ0m4QaFNInAaJUb_jyoDle1_RE6cp9TlvIKy1Kh00vbScAWYNZ2aiWwkkhqD6xk0Qu0kOFxnRef-oeIztIuJneWs1h29TPEDlIrDRfTWholeKgeyI3dSVqqrLUAn/s1600/SoftwareDeveloperSkills.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="92" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1y57e-8yJBakDytxBZ0m4QaFNInAaJUb_jyoDle1_RE6cp9TlvIKy1Kh00vbScAWYNZ2aiWwkkhqD6xk0Qu0kOFxnRef-oeIztIuJneWs1h29TPEDlIrDRfTWholeKgeyI3dSVqqrLUAn/s640/SoftwareDeveloperSkills.gif" width="640" /></a></div>
<div>
<span style="color: #333333; font-family: helvetica neue;"><span style="font-size: 15.3333px;"><br /></span></span><ul style="margin-top: 0cm; text-align: left;" type="disc">
</ul>
<div class="MsoNormal" style="margin-bottom: 12.0pt;">
<span style="font-size: xx-small;"><i><span style="background-color: white; color: #333333; font-family: "helvetica neue";">References:</span></i><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br />
</span><span style="font-family: "times new roman"; mso-fareast-font-family: "Times New Roman";"><a href="http://www.amazon.com/Soft-Skills-software-developers-manual/dp/1617292397/"><span style="background: white; color: #888888; font-family: "helvetica neue";">http://www.amazon.com/Soft-Skills-software-developers-manual/dp/1617292397/</span></a></span><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br />
</span><span style="font-family: "times new roman"; mso-fareast-font-family: "Times New Roman";"><a href="http://storyscaping.com/"><span style="background: white; color: #888888; font-family: "helvetica neue";">http://storyscaping.com/</span></a></span><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br />
</span><span style="font-family: "times new roman"; mso-fareast-font-family: "Times New Roman";"><a href="http://www.techrepublic.com/blog/10-things/10-highly-valued-soft-skills-for-it-pros/"><span style="background: white; color: #888888; font-family: "helvetica neue";">http://www.techrepublic.com/blog/10-things/10-highly-valued-soft-skills-for-it-pros/</span></a></span></span><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><span style="font-size: xx-small;"><br /></span>
<br />
</span><b><i><span style="background: white; color: #333333; font-family: "times new roman"; font-size: 10.0pt;">Disclaimer:</span></i></b><span style="color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br />
<br />
</span><span style="background: white; color: #333333; font-family: "times new roman"; font-size: 7.5pt;">All data and information
provided on this site is for informational purposes only. This site makes no
representations as to accuracy, completeness, correctness, suitability, or
validity of any information on this site and will not be liable for any errors,
omissions, or delays in this information or any losses, injuries, or damages arising
from its display or use. All information is provided on an as-is basis.This is
a personal weblog. The opinions expressed here represent my own and not those
of my employer or any other organization.</span><span style="font-family: "times new roman"; mso-fareast-font-family: "Times New Roman";"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt;">
<span style="background: white; color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;">
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
<o:PixelsPerInch>96</o:PixelsPerInch>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
DefSemiHidden="false" DefQFormat="false" DefPriority="99"
LatentStyleCount="380">
<w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index 9"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" Name="toc 9"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="header"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footer"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="index heading"/>
<w:LsdException Locked="false" Priority="35" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of figures"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="envelope return"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="footnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="line number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="page number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote reference"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="endnote text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="table of authorities"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="macro"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="toa heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Bullet 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Number 5"/>
<w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Closing"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Signature"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="true"
UnhideWhenUsed="true" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="List Continue 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Message Header"/>
<w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Salutation"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Date"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text First Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Heading"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Body Text Indent 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Block Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Hyperlink"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="FollowedHyperlink"/>
<w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Document Map"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Plain Text"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="E-mail Signature"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Top of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Bottom of Form"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal (Web)"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Acronym"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Address"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Cite"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Code"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Definition"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Keyboard"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Preformatted"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Sample"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Typewriter"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="HTML Variable"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Normal Table"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="annotation subject"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="No List"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Outline List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Simple 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Classic 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Colorful 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Columns 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Grid 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table List 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table 3D effects 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Contemporary"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Elegant"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Professional"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Subtle 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Web 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Balloon Text"/>
<w:LsdException Locked="false" Priority="39" Name="Table Grid"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Table Theme"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 1"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 2"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 3"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 4"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 5"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 6"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 7"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 8"/>
<w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true"
Name="Note Level 9"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" SemiHidden="true" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" QFormat="true"
Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" QFormat="true"
Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" QFormat="true"
Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" QFormat="true"
Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" QFormat="true"
Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" QFormat="true"
Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" SemiHidden="true"
UnhideWhenUsed="true" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" SemiHidden="true"
UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
<w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/>
<w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/>
<w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/>
<w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/>
<w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/>
<w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/>
<w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="Grid Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="Grid Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="Grid Table 7 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/>
<w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/>
<w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 1"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 1"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 2"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 2"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 3"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 3"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 4"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 4"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 5"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 5"/>
<w:LsdException Locked="false" Priority="46"
Name="List Table 1 Light Accent 6"/>
<w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/>
<w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/>
<w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/>
<w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/>
<w:LsdException Locked="false" Priority="51"
Name="List Table 6 Colorful Accent 6"/>
<w:LsdException Locked="false" Priority="52"
Name="List Table 7 Colorful Accent 6"/>
</w:LatentStyles>
</xml><![endif]-->
<!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
mso-para-margin:0cm;
mso-para-margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:Calibri;
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
<!--StartFragment-->
<!--EndFragment--></span></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 12.0pt;">
<span style="background: white; color: #333333; font-family: "helvetica neue"; font-size: 11.5pt;"><br /></span></div>
</div>
</div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com10tag:blogger.com,1999:blog-2368166884378082804.post-11512124548592577982015-09-04T22:58:00.004-07:002015-09-04T23:38:23.999-07:00HTTP/2 - Powered by SPDY (speedy) and inspired by evolutionary web<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Verdana, sans-serif;">While driving back home, I was listening to Mark Nottingham's (who chairs IETF HTTP working group) podcast on HTTP/2 and it was very interesting to know about the upcoming changes in HTTP protocol. Post that I did some research and sharing <b>some interesting findings</b> with respect to HTTP/2.</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">It's been a long time the backbone of Internet, HTTP has not gone through major revision (1.1 was released 1997) & came to know through the podcast that usually standards have a very longer cycle (even in today's agile world). </span><span style="font-family: Verdana, sans-serif;">HTTP/2 RFC 7540 got published in May 2015 and it is open for all. </span><br />
<br />
<blockquote class="tr_bq">
<span style="font-family: Verdana, sans-serif;"><i>"Very interesting fact is it is based on SPDY (p<span style="background-color: white; color: #222222; line-height: 19.84px;">ronounced speedy), which was developed by Google and after many discussions Google decided to contribute it for HTTP/2 (great for industry)"</span></i></span></blockquote>
<span style="font-family: Verdana, sans-serif;"><br /></span>
<span style="font-family: Verdana, sans-serif;">I have summarized <b>key findings</b> based on my research & study on this subject:</span><br />
<span style="font-family: Verdana, sans-serif;"><br /></span>
<b><span style="font-family: Verdana, sans-serif;"><u>What's not changing?</u></span></b><br />
<b><span style="font-family: Verdana, sans-serif;"><br /></span></b>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqvThSbNkR3WTzC9bJpKRpS-fL7BYe_7OXW3CASl3RT_WB1hZPRZi_vmwX3InEVa-0GOP3zPMlOOdhLT0LgQkrJuCFD-_E-49RKIqegzy_h6sh-kgYsoIrrPaCq41RI7-IopKG2VO7f8A5/s1600/notchanges.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="HTTP/2 - What is not changing" border="0" height="220" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgqvThSbNkR3WTzC9bJpKRpS-fL7BYe_7OXW3CASl3RT_WB1hZPRZi_vmwX3InEVa-0GOP3zPMlOOdhLT0LgQkrJuCFD-_E-49RKIqegzy_h6sh-kgYsoIrrPaCq41RI7-IopKG2VO7f8A5/s400/notchanges.gif" title="HTTP/2 - What is not changing" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><br />
HTTP/2 vs. HTTP 1.1 - What's not changing?</td></tr>
</tbody></table>
<b><span style="font-family: Verdana, sans-serif;"><br /></span></b>
<b><span style="font-family: Verdana, sans-serif;"><br /></span></b><span style="font-family: Verdana, sans-serif;"><b>a) No New Verbs/Methods -</b> There are no new verbs (aka methods) and it will keep its current sub-set - POST, GET, HEAD, <span style="background-color: white; color: #252525; line-height: 22.4px;">OPTIONS, PUT, DELETE, TRACE and CONNECT. Interestingly the last 5 methods got added in HTTP 1.1.</span></span><br />
<span style="background-color: white; color: #252525; font-family: Verdana, sans-serif; line-height: 22.4px;"><b>b) No change in approach for Cookies </b></span><br />
<span style="background-color: white;"><span style="color: #252525;"><span style="font-family: Verdana, sans-serif; line-height: 22.4px;">Because of compatibility concerns, there was no proposal on changing state related mechanisms.</span></span></span><br />
<span style="background-color: white; color: #252525; font-family: Verdana, sans-serif; line-height: 22.4px;"><b>c) HTTP 1.1 will LIVE -</b> there is no force to replace HTTP 1.1 with HTTP/2 and it will let industry decide on its future. Implementers will play bigger role in this.</span><br />
<span style="background-color: white; color: #252525; font-family: Verdana, sans-serif; line-height: 22.4px;"><br /></span>
<span style="background-color: white; color: #252525; font-family: Verdana, sans-serif; line-height: 22.4px;"><b><u>What's changing (major ones)?</u></b></span><br />
<span style="background-color: white; color: #252525; font-family: Verdana, sans-serif; line-height: 22.4px;"><b><br /></b></span>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixi-EeWY6OH1dEoFR9GHAKXimqAFtutegsHYjZtiLE3RyKN54MRcobVYJuihKkCgve7Na2k90AEY90wGxP9l9rsazbGzyt86Dt20RVtiSFPUOOt7-y_men1X3FnpYJVq9gv3bRk8E1PaSa/s1600/http2-changes.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="HTTP/2 - Major Changes" border="0" height="216" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixi-EeWY6OH1dEoFR9GHAKXimqAFtutegsHYjZtiLE3RyKN54MRcobVYJuihKkCgve7Na2k90AEY90wGxP9l9rsazbGzyt86Dt20RVtiSFPUOOt7-y_men1X3FnpYJVq9gv3bRk8E1PaSa/s400/http2-changes.gif" title="HTTP/2 - Major Changes" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">HTTP/2 Major Changes</td></tr>
</tbody></table>
<span style="background-color: white; color: #252525; font-family: Verdana, sans-serif; line-height: 22.4px;"><b><br /></b></span>
<span style="background-color: white; color: #252525; font-family: Verdana, sans-serif; line-height: 22.4px;"><b>a) TEXT to BINARY - </b>Easy guess, text is more user friendly but binary will always be faster (I heard that it is largely dependent on implementation providers but performance improvement can be in the range of 10-15%). Also, it decreases verbosity of the protocol.</span><br />
<span style="background-color: white; color: #252525; font-family: Verdana, sans-serif; line-height: 22.4px;"><br /></span>
<span style="font-family: Verdana, sans-serif;"><span style="background-color: white; color: #252525; line-height: 22.4px;"><b>b)</b> </span><b style="background-color: white; color: #252525; line-height: 22.4px;">Head-of-line blocking</b><span style="background-color: white; color: #252525; line-height: 22.4px;"> (</span><b style="background-color: white; color: #252525; line-height: 22.4px;">HOL blocking</b><span style="background-color: white; color: #252525; line-height: 22.4px;">) or </span><b style="background-color: white; color: #252525; line-height: 22.4px;">HTTP pipelining</b><span style="background-color: white; color: #252525; line-height: 22.4px;"> t<b>o </b></span><span style="background-color: white; color: #333333; line-height: 20px;"><b>fully multiplexed</b></span></span><br />
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;">If you have used Firebug, you would have noticed that a typical web page makes many HTTP requests to server to load page faster and that causes many connections to server. Multiplexing will help in opening just a single connection per page from one origin. Fantastic News!!</span><br />
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;"><b>c) Many Connections to Single Connection</b></span><br />
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;">Explained in the point above, but this is worth mentioning again :-)</span><br />
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;"><b>d) Verbose Header to Header Compression (HPACK)</b></span><br />
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;">HPACK is a compression format, which will be used to represent HTTP Headers. It will be easier for programmers to leverage headers now that it is compressed (less data to travel). There was a consideration to use GZIP but it was discarded because of security concerns. </span><br />
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;"><br /></span>
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;"><b>e) PULL ONLY to PULL-N-PUSH</b></span><br />
<span style="background-color: white; color: #333333; font-family: Verdana, sans-serif; line-height: 20px;">Server push will be allowed to clients and yes, that can give birth to many new design patterns. There will be a choice to client to turn it off.</span><br />
<span style="font-family: Verdana, sans-serif;"><span style="background-color: white; color: #333333; line-height: 20px;"><br /></span>
<span style="background-color: white; color: #252525; line-height: 22.4px;">As per <a href="https://www.h2check.org/stats">h2check</a>, 16% of websites (including twitter, google, facebook) support HTTP/2 + SPDY:</span></span><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8VZADtKiRPhyphenhyphen92AGNCyq2iyDJveuidjC0-ogiknJaNadW2hmvnJZd08qtQf48IvHJf6dxR-C1sHD_mT_bMyYM8343OVXEExz_20dylVIxI2wdMFvp86XkEk8Y4wl-axDAWRZi6SiOEm_j/s1600/web-http2.gif" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img alt="Web Usage of HTTP/2" border="0" height="231" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi8VZADtKiRPhyphenhyphen92AGNCyq2iyDJveuidjC0-ogiknJaNadW2hmvnJZd08qtQf48IvHJf6dxR-C1sHD_mT_bMyYM8343OVXEExz_20dylVIxI2wdMFvp86XkEk8Y4wl-axDAWRZi6SiOEm_j/s400/web-http2.gif" title="Web Usage of HTTP/2" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;"><i style="font-size: 12.8px;"><span style="font-family: Verdana, sans-serif; font-size: xx-small;"><span style="background-color: white; color: #252525; line-height: 22.4px;">Source: </span><span style="color: #252525;"><span style="line-height: 22.4px;">https://www.h2check.org/stats</span></span></span></i></td></tr>
</tbody></table>
<span style="font-family: Verdana, sans-serif;"><span style="color: #252525;"><span style="font-size: 14px; line-height: 22.4px;"><br /></span></span></span>
<span style="font-family: Verdana, sans-serif;"><span style="color: #252525;"><span style="font-size: 14px; line-height: 22.4px;"><br /></span></span>
<span style="background-color: white; color: #252525; font-size: 14px; line-height: 22.4px;">Google Chrome Canary, Internet Explorer 11, Safari 9 & Firefox 36 provides full support for HTTP/2. Best of luck for its future!!</span></span><br />
<span style="font-family: Verdana, sans-serif;"><span style="background-color: white; color: #252525; font-size: 14px; line-height: 22.4px;"><br /></span></span>
<b><i><span style="font-family: 'Times New Roman', serif; font-size: 10pt;">Disclaimer:</span></i></b><br />
<br />
<span style="font-family: 'Times New Roman', serif; font-size: 7.5pt;">All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, correctness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.</span><br />
<span style="background-color: white; color: #252525; font-family: Verdana, sans-serif; font-size: 14px; line-height: 22.4px;"><br /></span>
<span style="background-color: white; color: #252525; font-family: sans-serif; font-size: 14px; line-height: 22.4px;"><br /></span></div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com1tag:blogger.com,1999:blog-2368166884378082804.post-60497812109087221462015-08-03T03:49:00.001-07:002015-08-03T06:57:52.950-07:00Understanding Backbone.js from the lens of a Java programmer<div dir="ltr" style="text-align: left;" trbidi="on">
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?lang=css&skin=sunburst"></script>
<br />
<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<div class="p1">
<span class="s1">Let me start this blog in favor of backend or server-side programmers by making the following statement:</span></div>
<div class="p1">
<blockquote class="tr_bq">
<i><span class="s1">"A</span> server-side programmer (Java or similar) can understand nuances of javascript client or server-side frameworks or libraries much more quickly than an html developer". </i></blockquote>
</div>
<div class="p1">
</div>
<div class="p1">
There are two key reasons behind the above statement:</div>
<div class="p1">
</div>
<ul style="text-align: left;">
<li>Client-side development is not limited to HTML/CSS rather it has evolved to contain <b>programming & design paradigms</b>, which is complex for an html programmer.</li>
<li>Design paradigms including patterns needs to be applied to front-end code to keep it <b>maintainable, performant & scalable </b>- which is greenfield for programmers but not for HTML developers.</li>
</ul>
<div class="p1">
<div style="text-align: justify;">
<span class="s1">Having said that, I am writing this blog to exhibit that how easy it is for java programmers to co-relate concepts from java to javascript. I have chosen Backbone.js for the same, which is a popular library for developing singe-page web applications.</span></div>
</div>
<div class="p1">
<span class="s1"><br /></span></div>
<div class="p1">
<div style="text-align: justify;">
<span class="s1">There is a major difference between Backbone and AngularJS, which is a framework & Backbone is a library. Frameworks impose more constraints & assumptions and are considered to make life easier but at the cost of being more restrictive and heavy (particularly from size of javascript). </span><br />
<span class="s1"><br /></span></div>
<div style="text-align: justify;">
<blockquote class="tr_bq">
"<i>From a java programmer perspective, a JavaScript library is similar to Apache CommonUtils Library (distributable as JAR) whereas framework is Apache Wicket or Spring framework (distributable as set of JARs).</i>"</blockquote>
</div>
</div>
<div class="p1">
<br /></div>
<div class="p1">
<div style="text-align: justify;">
Backbone.js is an implementation of MVP pattern (similar to MVC pattern with slight deviation), which is not a new concept for a java programmer (might be for an HTML developer).</div>
</div>
<div class="p1">
<br /></div>
<div class="p1">
A matrix below can be handy for co-relating conceptual elements between Java & Backbone based components:</div>
<!-- Latest compiled and minified CSS -->
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet"></link>
<br />
<div class="p1">
<div class="p1">
<div class="table-responsive">
<table class="table table-bordered table-striped">
<thead>
<tr>
<td></td>
<th>Java</th>
<th>JavaScript (Backbone)</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">Model</th>
<td class="text-success">JPA Entity or POJO Class</td>
<td class="text-success">To create a Model class extend Backbone.Model.extend(). Backbone also has concept of Collection objects, which are nothing but collection of Model objects.
</td>
</tr>
<tr>
<th scope="row">View</th>
<td class="text-success">JSP or XHTML (with scriplet)</td>
<td class="text-success">There are two parts to it:
<br />
<ul>
<li>
Templates as HTMLs – Backbone leverages own templates or JS templating libraries like Handlebar
</li>
<li>
View Rendering Code as JavaScript – On change of model, invokes relevant code to lookup element in DOM and update HTML using Jquery.
</li>
</ul>
</td>
</tr>
<tr>
<th scope="row">Controller</th>
<td class="text-success">POJO Class manipulating Models & updating View</td>
<td class="text-success">A Backbone Router is similar component but not exactly the same. It maps URLs to Javascript functions.
</td>
</tr>
</tbody>
</table>
</div>
<br />
<span class="s1">A logical architecture for a single-page client application can be visualized as below:</span></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="p1">
<span class="s1"><br /></span></div>
</div>
<div class="p1">
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEXWsM14FfQxKDPPKHGOI68C24onOyZLagPuVlh47jzh1R7S6rl2qy2IdXV4evS78yDf8NiQRMqYHEUaJftlal25nMETQ6-HR_te-R4nbiK3fOTh1xyuyD1mwaqRqJMbZncVEJ9CWUKy2w/s1600/ui-fw-600.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="316" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEXWsM14FfQxKDPPKHGOI68C24onOyZLagPuVlh47jzh1R7S6rl2qy2IdXV4evS78yDf8NiQRMqYHEUaJftlal25nMETQ6-HR_te-R4nbiK3fOTh1xyuyD1mwaqRqJMbZncVEJ9CWUKy2w/s640/ui-fw-600.gif" width="640" /></a></div>
<br />
<br />
<div class="p1">
<span class="s1">
I have created a very simple application, which lists employees along with few data elements. </span><br />
<span class="s1"><br /></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs9A2Zpn8GAKvgJHSq09sy3GNC81WuB3G2IdqXxBOZxL92weX9wQio_wMFTGKPIKjKD7pJeJPxwBQ-foU0SIuMWuixNBak68Zy8k-GJpxF_48Gop8UgwMF0LsyeWzJkSAmtrnOKommN48M/s1600/screen.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs9A2Zpn8GAKvgJHSq09sy3GNC81WuB3G2IdqXxBOZxL92weX9wQio_wMFTGKPIKjKD7pJeJPxwBQ-foU0SIuMWuixNBak68Zy8k-GJpxF_48Gop8UgwMF0LsyeWzJkSAmtrnOKommN48M/s640/screen.gif" width="640" /></a></div>
<div class="p1">
<span class="s1">
Source code in terms of javascript for above application is below, which demonstrates simplicity of using backbone library.
</span></div>
<pre class="prettyprint"> // Namespace our app
var app = {};
// define employee model
app.employee = Backbone.Model.extend({
defaults: {
company: "Lorem Ipsum",
}
});
// define view rendering logic for employee
app.employeeView = Backbone.View.extend({
tagName: "article",
template: _.template( $("#employeeElement").html() ),
render: function() {
var employeeTemplate = this.template(this.model.toJSON());
this.$el.html(employeeTemplate);
return this;
}
});
// A group (array) of employee models
app.employeeCollection = Backbone.Collection.extend({
// What type of models are in this collection?
model: app.employee
});
// defined rendering logic for employee collection
app.employeeGroupView = Backbone.View.extend({
tagName: "section",
render: function() {
this.collection.each(this.addEmployee, this);
return this;
},
addEmployee: function(employee) {
var employeeView = new app.employeeView ({ model: employee });
this.$el.append(employeeView.render().el);
}
});
// action for URLs
app.Router = Backbone.Router.extend({
routes :{
"": "noCopy",
"firstEmployee" : "firstEmployeeMessage",
"secondEmployee": "secondEmployeeMessage"
},
noCopy: function() {
$(".message").html("");
},
firstEmployeeMessage: function() {
$(".message").html("<h2>
Message for First Employee</h2>
");
},
secondEmployeeMessage: function() {
$(".message").html("<h2>
Message for Second Employee</h2>
");
}
});
// create data for 2 employees
var firstEmployee = new app.employee({
name: "Ankur Kumar",
location: "Delhi",
link: "firstEmployee"
});
var secondEmployee = new app.employee({
name: "Jon Garton",
location: "Melbourne",
link: "secondEmployee"
});
var employeeGroup = new app.employeeCollection([
firstEmployee, secondEmployee
]);
// render employee view
var employeeGroupView = new app.employeeGroupView({ collection: employeeGroup});
$(".allEmployees").html(employeeGroupView.render().el);
var employeeRouter = new app.Router();
// for router
Backbone.history.start();
</pre>
</div>
<div class="p1">
<span class="s1">
All you need now is following HTML snippet in your page to render the view:
</span></div>
<?prettify lang=html?>
<pre class="prettyprint" id="quine" style="border:4px solid #88c"></pre>
<script>//<![CDATA[
(function () {
function html(s) {
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');
}
var quineHtml = html('<div class="message"><div>'
+ '\n' + '<div class="allEmployees"></div>' + '\n'
+ '<script id="employeeElement" type="text/template">' + '\n<ul>'
+'\n<li><strong>Name:</strong> <%= name %></li>'
+'\n<li><strong>Location:</strong> <%= location %></li>'
+'\n<li><strong>Company:</strong> <%= company %></li>'
+'\n<li><strong>Send Message:</strong> <a href="#<%= link %>">Click Here </a></li>'
+'\n</ul>\n'
+ '\n');
document.getElementById("quine").innerHTML = quineHtml;
})();
//]]>
</script>
</div>
</div>
<b><i><span style="font-family: 'Times New Roman', serif; font-size: 10pt;">Disclaimer:</span></i></b><br />
<div style="text-align: left;">
<b><i><span style="font-family: 'Times New Roman', serif; font-size: 10pt;"></span></i></b></div>
<div style="text-align: left;">
<span style="font-family: 'Times New Roman', serif; font-size: 7.5pt;">All data
and information provided on this site is for informational purposes only. This
site makes no representations as to accuracy, completeness, correctness,
suitability, or validity of any information on this site and will not be liable
for any errors, omissions, or delays in this information or any losses,
injuries, or damages arising from its display or use. All information is
provided on an as-is basis.This is a personal weblog. The opinions expressed
here represent my own and not those of my employer or any other organization.</span> <br />
<ul style="text-align: left;">
</ul>
</div>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com12tag:blogger.com,1999:blog-2368166884378082804.post-44717727965176632432015-03-14T09:09:00.000-07:002015-06-19T07:31:33.466-07:00Docker – A lightweight open-platform that works like a charm!!<div dir="ltr" style="text-align: left;" trbidi="on">
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?lang=css&skin=sunburst"></script>
<br />
<div>
<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcIHQ1N7Y1v4YNkbC4znB4l2Ij4kyiCjRm4Iuy026lOTcSjcxXqrL5aaXljjars-m2Nk-o0rcaLDEWe8O-qX6PQi-Zq0pTrE29h6FSej6oJii8Jp3hQRb6d4hUyCc0nvMgys4XYfF4p-fC/s1600/large_v-dark-trans.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="285" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhcIHQ1N7Y1v4YNkbC4znB4l2Ij4kyiCjRm4Iuy026lOTcSjcxXqrL5aaXljjars-m2Nk-o0rcaLDEWe8O-qX6PQi-Zq0pTrE29h6FSej6oJii8Jp3hQRb6d4hUyCc0nvMgys4XYfF4p-fC/s320/large_v-dark-trans.png" width="320" /></a></div>
Docker is not just a hyped technology, it is proving its metal and providing contemporary ways to manage distributed applications.<br />
<br />
Most of the architects have either started leveraging Docker or planning to do it in near future – that’s the impact it has made
in such a short time-frame and search on <i>Google Trends</i> says it all:<o:p></o:p></div>
<br />
<i>A simple analogy - Docker is like a ZIP archive (or EAR), which packages all dependencies in a single bundle to be shipped independently. It can be opened by any tool, which understands ZIP format.</i>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
The search on Google Trends says it all about it's popularity:<br />
<script src="//www.google.com/trends/embed.js?hl=en-US&q=/m/0wkcjgj&tz&content=1&cid=TIMESERIES_GRAPH_0&export=5&w=550&h=330" type="text/javascript"></script>
<br />
<br />
A quick glance at <b>Docker's capabilities:</b></div>
<div class="MsoNormal">
<b><br /></b>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwNJorNxYcJl1XEDoHqqmYBohBshtiJczTahB95II6gFl0lPE_7WjQx_TAgdLFOoqtcQ-73p1c1VAsqxsxOdIkxiFJ0-Gp9W7NutsgcBuUz8u7zLFziZt-XJjq-7m0miX0TBRSzdzIMGfB/s1600/Features.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="402" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgwNJorNxYcJl1XEDoHqqmYBohBshtiJczTahB95II6gFl0lPE_7WjQx_TAgdLFOoqtcQ-73p1c1VAsqxsxOdIkxiFJ0-Gp9W7NutsgcBuUz8u7zLFziZt-XJjq-7m0miX0TBRSzdzIMGfB/s640/Features.jpg" width="640" /></a></div>
<br />
<br /></div>
<div class="MsoNormal">
A quick set of instructions to get a container running locally
with Tomcat using Docker to showcase it's ease-of-use.<o:p></o:p><br />
<br /></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
<!--[if !supportLists]--><b><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; font-stretch: normal;">
</span></span><!--[endif]-->Step 1 – Install Docker on your system</b></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
<span style="font-family: 'Courier New'; text-indent: -0.25in;"><span style="font-family: 'Times New Roman'; font-size: 7pt; font-stretch: normal;"> </span></span><span style="text-indent: -0.25in;"> Install Docker by following the link below based on the platform you are using (Yes, even
Windows is supported) </span><a href="https://docs.docker.com/installation/#installation" style="text-indent: -0.25in;">https://docs.docker.com/installation/#installation</a></div>
<div class="MsoListParagraphCxSpFirst" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
<br /></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;">
<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
<!--[if !supportLists]--><b><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; font-stretch: normal;">
</span></span><!--[endif]-->Step 2 – Pull Tomcat Image from Docker
repository</b> (No need to download tomcat – docker magic of repository)</div>
<div>
<pre class="prettyprint">$sudo docker pull tomcat
</pre>
</div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;">
<o:p></o:p></div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
<!--[if !supportLists]--><b><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; font-stretch: normal;">
</span></span><!--[endif]-->Step 3 – Start Tomcat container</b><o:p></o:p></div>
<div>
<pre class="prettyprint">$sudo docker run –i –t tomcat /bin/bash
$cd /usr/local/tomcat/bin
$./startup.sh
$tail –f ../logs/catalina.out
</pre>
</div>
<div class="MsoListParagraphCxSpMiddle" style="mso-list: l0 level1 lfo1; text-indent: -.25in;">
<!--[if !supportLists]--><b><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;">·<span style="font-family: 'Times New Roman'; font-size: 7pt; font-stretch: normal;">
</span></span><!--[endif]-->Alternative Step (instead of step 3) – </b>You can
simply use following short-cut command:<o:p></o:p></div>
<pre class="prettyprint">$sudo docker run tomcat
</pre>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1.0in; mso-add-space: auto; mso-list: l0 level2 lfo1; text-indent: -.25in;">
<br /></div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
It’s quite obvious that Docker is not just all words; action
speaks louder than words!!<o:p></o:p><br />
<br />
A simple consolidation of all<b> Docker's use-cases </b>& the list is expanding:<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNUow1gS_2FPNcLesZX_f41SZ2cxJIZ76I4qvY4symhO8Nm0KNanONzrcjG0fFPEeS1cTdUTsTjDoB-2mnrImE3ew5NYsejdiIFw-wMt10QtOk02zPcNx4dULZLWUQznMNmT8MSVXHe0Hy/s1600/usecases.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="356" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhNUow1gS_2FPNcLesZX_f41SZ2cxJIZ76I4qvY4symhO8Nm0KNanONzrcjG0fFPEeS1cTdUTsTjDoB-2mnrImE3ew5NYsejdiIFw-wMt10QtOk02zPcNx4dULZLWUQznMNmT8MSVXHe0Hy/s640/usecases.jpg" width="640" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<b><i><span style="font-family: 'Times New Roman', serif; font-size: 10pt;">Disclaimer:</span></i></b><br />
<br />
<span style="font-family: 'Times New Roman', serif; font-size: 7.5pt;">All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, correctness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.</span></div>
</div>
</div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com0tag:blogger.com,1999:blog-2368166884378082804.post-6223716847933252232014-11-12T09:18:00.000-08:002014-11-12T09:23:16.206-08:00My weekend getaway with IBM Bluemix – A cloud platform providing PaaS with DevOps<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--></div>
<div style="text-align: left;">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]-->
</div>
<div class="MsoNormal" style="text-align: left;">
As my usual ritual of going through technology tweets over
the weekend, I got interested in exploring IBM Bluemix (which is based on Cloud
Foundry) and decided to have first-hand experience of the same. </div>
<div class="MsoNormal" style="text-align: left;">
For those who do not have context of IBM Bluemix, a very
short description is – <i>Bluemix is implementation of IBM's Open Cloud
Architecture, built on Cloud Foundry, which enables rapid development, deployment
and management of cloud applications.</i></div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><u>4 Key Takeaways </u></b><span style="mso-spacerun: yes;"> </span>- I have summarized key takeaways based on my
experience with Bluemix:</div>
<div class="MsoNormal" style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><u>Takeaway # 1 – A complete
lifecycle for cloud-based software development</u></b></div>
<div style="text-align: left;">
</div>
<ul style="text-align: left;">
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Bluemix does not provide only PAAS but also
integrates seamlessly with IBM DevOps Services (which is completely cloud-based
for continuous delivery).</li>
<li>Bluemix can support web application, mobile
application, middle-tier services (e.g. cache service) and backend services
(e.g. IBM Watson for Cognitive Applications) or system-of-record (e.g. NoSQL
database like Mongo or MySQL)</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDrwCJxnY7RaHkA-P0DgjVuZa5mKQ2SEKadwuxLBe9U8ns-IJhomDPRjMG0rgAOWlF-tUa0kpmIh2JCp-3Ij2RMduJgj4QYdSI6r07Q2qgGFG-vwF9UbUmo6h-snADJo1f83minBo8BA2S/s1600/dev-cycle.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="326" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhDrwCJxnY7RaHkA-P0DgjVuZa5mKQ2SEKadwuxLBe9U8ns-IJhomDPRjMG0rgAOWlF-tUa0kpmIh2JCp-3Ij2RMduJgj4QYdSI6r07Q2qgGFG-vwF9UbUmo6h-snADJo1f83minBo8BA2S/s400/dev-cycle.gif" width="400" /></a></div>
<br />
<div style="text-align: left;">
</div>
<div class="MsoListParagraphCxSpLast" style="text-align: left; text-indent: -0.25in;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><u>Takeaway # 2 – A seamless
integration of Paas & DevOps</u></b></div>
<div style="text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<ul style="text-align: left;">
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>DevOps in true sense - <span style="mso-spacerun: yes;"> </span>It facilitates you to code online, track &
plan and build & deploy applications completely on cloud platform. Also, it
helps to automate unit testing & configure any build tool (Maven, Ant,
Grunt, Gradle, npm, shell script) in few steps.</li>
<li>Workflow driven (aka delivery pipeline) to
automatically control build & deploy your application to single/multiple cloud-based
environments.</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixb3tedUTnzAM7HTzw97Wyps3sk7jW2FX8WrPSvSqKdfGECNsTnMwkRqe0vRT6TirBOHFBfYWhiQ_jkO_ZjVd2-QBag7hDbjiYfvmj7eyptN_xOY-JoizCjo6M5To_u-ke1UEALqWrbTeH/s1600/RAD.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixb3tedUTnzAM7HTzw97Wyps3sk7jW2FX8WrPSvSqKdfGECNsTnMwkRqe0vRT6TirBOHFBfYWhiQ_jkO_ZjVd2-QBag7hDbjiYfvmj7eyptN_xOY-JoizCjo6M5To_u-ke1UEALqWrbTeH/s400/RAD.gif" width="400" /></a></div>
<div style="text-align: left;">
</div>
<div class="MsoListParagraphCxSpLast" style="text-align: left; text-indent: -0.25in;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><u>Takeaway # 3 – An
open-source based platform to avoid vendor lock-in</u></b></div>
<div style="text-align: left;">
</div>
<ul style="text-align: left;">
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Bluemix is an implementation of IBM's Open Cloud
Architecture based on Cloud Foundry, an open source platform as a service
(PaaS). Cloud Foundry is not vendor specific & does not lock you into any
proprietary or custom cloud implementation.</li>
<li>You can choose to run Cloud Foundry in Public,
Private, VMWare & OpenStack based clouds.</li>
</ul>
<div style="text-align: left;">
</div>
<div class="MsoListParagraphCxSpLast" style="text-align: left; text-indent: -0.25in;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
<b style="mso-bidi-font-weight: normal;"><u>Takeaway # 4 – A
future-ready extensible enterprise-level platform for Mobile, Big Data & IoT</u></b></div>
<div style="text-align: left;">
</div>
<ul style="text-align: left;">
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Quickly scale-up like any cloud platform for
your tenth or millionth user leveraging cloud services<span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span></li>
<li>Provides ready-made templates (aka
boilerplates), which provides configured runtime environment & predefined
services for mobile apps & web apps. Also, scripts (aka buildpacks)
available to support targeted PaaS (e.g. Java, Node.js)<span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span></li>
<li>Can be extended to leverage current & future
trends like Mobile, Cognitive Apps, Big Data & IoT (Internet-of-things)
based applications.</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPxrK2JMSgqQvS7Lw1G10Lt-XZMtad8-Gm-GIHAlsF82-EzBRqJ2NvFf-zdV5yujjjQwXZZwXyFuFyMb3rCw8QthgHXTJ3QF2wRWmOQ-qJeCdmIRp9nnII_2M56eW0p_jCcYo3eNq5lnsF/s1600/Apps.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="302" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPxrK2JMSgqQvS7Lw1G10Lt-XZMtad8-Gm-GIHAlsF82-EzBRqJ2NvFf-zdV5yujjjQwXZZwXyFuFyMb3rCw8QthgHXTJ3QF2wRWmOQ-qJeCdmIRp9nnII_2M56eW0p_jCcYo3eNq5lnsF/s400/Apps.gif" width="400" /></a></div>
<div style="text-align: left;">
<br /></div>
<div class="MsoNormal" style="text-align: left;">
For people interested in getting their hands dirty, here are
detailed set of instructions to experience a sample web application using data
cache service:</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Step 1 – Get
registered on IBM Bluemix & IBM DevOps Services</u></b></div>
<ul style="text-align: left;">
<li><span class="MsoHyperlink"><span style="color: windowtext; font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; text-decoration: none; text-underline: none;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span></span>I got registered with IBM Bluemix (trial
account for 30 days) at <a href="https://ace.ng.bluemix.net/">https://ace.ng.bluemix.net</a><span class="MsoHyperlink"><span style="color: windowtext; text-decoration: none; text-underline: none;"></span></span></li>
<li><span class="MsoHyperlink"><span style="color: windowtext; font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol; text-decoration: none; text-underline: none;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span></span>I got registered on IBM DevOps (use
existing IBM id or you can link different userid) at <a href="https://hub.jazz.net/">https://hub.jazz.net/</a><span class="MsoHyperlink"><span style="color: windowtext; text-decoration: none; text-underline: none;"></span></span></li>
<li>You can explore Bluemix dashboard, which is very user
friendly and I liked the UX (though at times, it tends to respond slowly).</li>
</ul>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Step 2 – Add
DataCache Service using Bluemix Dashboard</u></b></div>
<ul style="text-align: left;">
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Click on “Add A Service”</li>
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Choose “Web And Application” category from
left-hand pane</li>
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Click on “Create”. You can notice that it is
free service with terms & conditions (100 MB usage is free).</li>
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Data Cache dashboard is up & running now</li>
</ul>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivd6M_DOhgdTV0DZOgvMfdWuHssjve01ArIDP-2eqdB8z51yiXpxwNqg9a7VhvR9r09h72LmUIckFlIcLSbjH1PTbkCW3pesIWkzFiC2xQq5xRbrhJv2lAz-QzyvMP7aUZ_YwEWOB5z4sT/s1600/datacache.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="291" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivd6M_DOhgdTV0DZOgvMfdWuHssjve01ArIDP-2eqdB8z51yiXpxwNqg9a7VhvR9r09h72LmUIckFlIcLSbjH1PTbkCW3pesIWkzFiC2xQq5xRbrhJv2lAz-QzyvMP7aUZ_YwEWOB5z4sT/s640/datacache.gif" width="640" /></a></div>
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div style="text-align: left;">
<br />
<b style="mso-bidi-font-weight: normal;"><u>Step 3 – Create
& Deploy Web App</u></b><b style="mso-bidi-font-weight: normal;"><u><span style="font-size: 12.0pt; line-height: 115%; mso-bidi-font-size: 11.0pt;">l</span>ication
in Bluemix</u></b><br />
<div class="MsoListParagraphCxSpLast" style="text-indent: -0.25in;">
</div>
<ul style="text-align: left;">
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>You need to install Cloud Foundry CLI tool from
here: <a href="http://www.ng.bluemix.net/docs/BuildingWeb.jsp#install-cf?cm_mmc=dw-_-bluemix-_-cl-datacache-app-_-article">http://www.ng.bluemix.net/docs/BuildingWeb.jsp#install-cf</a> <span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"></span></span> </li>
<li>You can also fork a project from sample web apps
in IBM DevOps Services and build WAR completely from Cloud Environment<span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"></span></li>
<li>You can also refer to IBM link : <a href="http://www.ibm.com/developerworks/cloud/library/cl-datacache-app/index.html">http://www.ibm.com/developerworks/cloud/library/cl-datacache-app/index.html</a></li>
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>See snapshot of Web Application - mycachewebbeta
(generates WAR using Maven) below, which I created:</li>
</ul>
<div class="MsoListParagraphCxSpMiddle">
<span style="mso-no-proof: yes;"></span></div>
<div class="MsoListParagraphCxSpMiddle">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXiGqbx15RZvPi9T651jv6vfppFFBj6ny_3nBUOVfUl_baoDKmF_h5zlQSw-x3nrCe0KW7U_1K-aROvTLiZqdSJcOUQvixeoB7AJQBPkXDCPmOLMTFACSrD5a1_zN8Y7Ev8SMjOkzKCVXk/s1600/webapp.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="400" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhXiGqbx15RZvPi9T651jv6vfppFFBj6ny_3nBUOVfUl_baoDKmF_h5zlQSw-x3nrCe0KW7U_1K-aROvTLiZqdSJcOUQvixeoB7AJQBPkXDCPmOLMTFACSrD5a1_zN8Y7Ev8SMjOkzKCVXk/s400/webapp.gif" width="343" /></a></div>
<ul style="text-align: left;">
<li>You need to download json-org.jar from IBM site:<a href="ftp://public.dhe.ibm.com/cloud/bluemix/datacache/"> ftp://public.dhe.ibm.com/cloud/bluemix/datacache/</a><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"><i> </i></span></span></span><i><br />(There is also dependency on orgclient.jar but as
default runtime for IBM Bluemix is Liberty, it will be available automatically)</i><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><br /></span></span></li>
</ul>
<ul style="text-align: left;">
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Deploy WAR using following commands:</li>
</ul>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;">
<code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span></code>Connect to IBM Cloud<code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">: </span></code><span style="mso-spacerun: yes;"></span><code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">cf
api </span></code><a href="https://api.ng.bluemix.net/"><span style="font-family: "Courier New"; font-size: 10.0pt; line-height: 115%;">https://api.ng.bluemix.net</span></a><code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;"></span></code></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;">
<code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span></code>Login to IBM Cloud<code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">: cf login</span></code></div>
<div class="MsoListParagraphCxSpMiddle" style="margin-left: 1in; text-indent: -0.25in;">
<code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span></code>Deploy your app<code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">: </span></code><code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">cf push mycachewebbeta -p
target\mycachewebbeta-0.0.1-SNAPSHOT.war</span></code></div>
<div class="MsoListParagraphCxSpLast" style="margin-left: 1in; text-indent: -0.25in;">
<span style="font-family: "Courier New"; mso-fareast-font-family: "Courier New";"><span style="mso-list: Ignore;">o<span style="font: 7.0pt "Times New Roman";">
</span></span></span>Access your app<code><span style="font-size: 10.0pt; line-height: 115%; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">:</span></code> <a href="http://mycachewebbeta.mybluemix.net/">http://mycachewebbeta.mybluemix.net</a></div>
<div class="MsoNormal" style="margin-left: 0.75in;">
<span style="mso-no-proof: yes;"></span></div>
</div>
<div style="text-align: left;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3frMnwLrpVnDrBe2eZiwi6DSbNgOpVumLIaROO-z7M9pgd0MuPdFS1stcfGPubPPZKgfn8NGpI_iROUBoACK6mwbNN2l8B2ViusUQlZFAIBGqXyUWTkBD2FSVHJ85Cqa-lBkn_GTsY1mM/s1600/CMD.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="562" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3frMnwLrpVnDrBe2eZiwi6DSbNgOpVumLIaROO-z7M9pgd0MuPdFS1stcfGPubPPZKgfn8NGpI_iROUBoACK6mwbNN2l8B2ViusUQlZFAIBGqXyUWTkBD2FSVHJ85Cqa-lBkn_GTsY1mM/s640/CMD.gif" width="640" /></a><br />
<ul style="text-align: left;">
<li>Bluemix dashboard gets updated with new
application:</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieN3c99829cJ_r_GSrCPgadfovjrnqsY082ji_DTdbKvpaQg9-tMBVgIjhTy4ulEzo0Xs6kckL17n6HxnqYGL4I2yHAN8-2da5l0Y2b7C4BeIrmI2A3FkMrWO1XRPbZyr9VFXnMQutUQy4/s1600/dashboard-post-deploy.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieN3c99829cJ_r_GSrCPgadfovjrnqsY082ji_DTdbKvpaQg9-tMBVgIjhTy4ulEzo0Xs6kckL17n6HxnqYGL4I2yHAN8-2da5l0Y2b7C4BeIrmI2A3FkMrWO1XRPbZyr9VFXnMQutUQy4/s640/dashboard-post-deploy.gif" width="640" /></a></div>
<div class="MsoListParagraphCxSpFirst" style="text-indent: -0.25in;">
<br /></div>
<div class="MsoListParagraphCxSpLast">
<b style="mso-bidi-font-weight: normal;"><u><span style="mso-no-proof: yes;"></span></u></b></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Step 5 – Bind Web
Application & Bind Service</u></b></div>
<ul style="text-align: left;">
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>Click on “mycachewebbeta” web application on
dashboard<span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span></li>
<li>Click on “Bind A Service” link<span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"> </span></span></span></li>
<li>Choose previously created data service </li>
</ul>
<div class="MsoListParagraphCxSpMiddle">
<b style="mso-bidi-font-weight: normal;"><u><span style="mso-no-proof: yes;"></span></u></b></div>
<div class="MsoListParagraphCxSpLast">
<b style="mso-bidi-font-weight: normal;"><u><span style="text-decoration: none;"></span></u></b></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKw0m4uWDM2XRl6hLwVfGzE8cF9CGzTUXu3hFNdEuRP5US51tKZzIPyT9QhHLjcu51Fz1BXC0hGUOyGCW9r11GWTNMhcqfAe5Z3TRk9ZXKA5mZHXL56flMm1PhqJWlkP1V1EC0EVfQiC-0/s1600/datacache-db.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="278" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKw0m4uWDM2XRl6hLwVfGzE8cF9CGzTUXu3hFNdEuRP5US51tKZzIPyT9QhHLjcu51Fz1BXC0hGUOyGCW9r11GWTNMhcqfAe5Z3TRk9ZXKA5mZHXL56flMm1PhqJWlkP1V1EC0EVfQiC-0/s640/datacache-db.gif" width="640" /></a></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>Step 6 – Test the
web application for Cache Put/Get</u></b></div>
<ul>
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>I have put 2 cache entries using my JSP based
utility:<b style="mso-bidi-font-weight: normal;"> </b><a href="http://mycachewebbeta.mybluemix.net/cachetest.jsp?operation=put&value=ankur&key=test2"><span style="mso-bidi-font-weight: normal;">http://mycachewebbeta.mybluemix.net/cachetest.jsp?operation=put&value=ankur&key=test2</span></a></li>
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;"><span style="font: 7.0pt "Times New Roman";"></span></span></span>To get cache entry value:<a href="http://mycachewebbeta.mybluemix.net/cachetest.jsp?operation=get&key=test2"><span style="mso-bidi-font-weight: normal;"> http://mycachewebbeta.mybluemix.net/cachetest.jsp?operation=get&key=test2</span></a></li>
<li>You can also look at data cache service
dashboard by clicking on “Data Cache – qs” on Bluemix dashboard</li>
</ul>
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtA9uZKMTlcTIFaAfuSf3NKBQSNJspnPlMIo9a1Bp7kwk0sW41U8r5B0RcBwmHtQV_HZqfkbfml2sw4qiCc4_NshE_LmmpB0844Q4vciiH04obetLpdiIgl_ef5QeMbV5MEXfPA7bHfPGg/s1600/cache-dash-after-update.gif" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="446" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgtA9uZKMTlcTIFaAfuSf3NKBQSNJspnPlMIo9a1Bp7kwk0sW41U8r5B0RcBwmHtQV_HZqfkbfml2sw4qiCc4_NshE_LmmpB0844Q4vciiH04obetLpdiIgl_ef5QeMbV5MEXfPA7bHfPGg/s640/cache-dash-after-update.gif" width="640" /></a> </div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
</div>
<div style="text-align: left;">
<div class="MsoListParagraphCxSpLast">
<b style="mso-bidi-font-weight: normal;"><u><span style="mso-no-proof: yes;"></span></u></b></div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u>References</u></b></div>
<ul style="text-align: left;">
<li>IBM Bluemix overview - <a href="https://www.ng.bluemix.net/docs/#overview/overview.html">https://www.ng.bluemix.net/docs/#overview/overview.html</a></li>
<li><span style="font-family: Symbol; mso-bidi-font-family: Symbol; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">IBM </span></span>Bluemix Available Services - <a href="https://ace.ng.bluemix.net/#/store">https://ace.ng.bluemix.net/#/store</a></li>
<li>IBM DevOps Services - <a href="http://www.ibm.com/developerworks/devops/">http://www.ibm.com/developerworks/devops/</a></li>
<li>Using IBM DevOps with JAZZ - <a href="https://hub.jazz.net/tutorials/jazzeditorjava/">https://hub.jazz.net/tutorials/jazzeditorjava/</a> <b><i><span style="font-family: 'Times New Roman', serif; font-size: 10pt;"> </span></i></b></li>
</ul>
<b><i><span style="font-family: 'Times New Roman', serif; font-size: 10pt;">Disclaimer:</span></i></b></div>
<div style="text-align: left;">
<b><i><span style="font-family: 'Times New Roman', serif; font-size: 10pt;"></span></i></b></div>
<div style="text-align: left;">
<span style="font-family: 'Times New Roman', serif; font-size: 7.5pt;">All data
and information provided on this site is for informational purposes only. This
site makes no representations as to accuracy, completeness, correctness,
suitability, or validity of any information on this site and will not be liable
for any errors, omissions, or delays in this information or any losses,
injuries, or damages arising from its display or use. All information is
provided on an as-is basis.This is a personal weblog. The opinions expressed
here represent my own and not those of my employer or any other organization.</span> <br /><ul style="text-align: left;">
</ul>
<div class="MsoListParagraphCxSpLast" style="text-indent: -0.25in;">
<br /></div>
<div class="MsoListParagraphCxSpLast" style="text-indent: -0.25in;">
<br /></div>
<br /></div>
</div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com1tag:blogger.com,1999:blog-2368166884378082804.post-46529627020804876552014-05-30T04:34:00.002-07:002014-10-13T21:01:16.414-07:00Ensuring Software Quality | A pragmatic approach in current dynamics<div dir="ltr" style="text-align: left;" trbidi="on">
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]-->
<br />
<div class="MsoNormal">
</div>
<div class="MsoNormal">
<b style="mso-bidi-font-weight: normal;"><u></u></b></div>
<div class="MsoNormal">
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves>false</w:TrackMoves>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<w:ValidateAgainstSchemas/>
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
<w:DoNotPromoteQF/>
<w:LidThemeOther>EN-US</w:LidThemeOther>
<w:LidThemeAsian>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<m:mathPr>
<m:mathFont m:val="Cambria Math"/>
<m:brkBin m:val="before"/>
<m:brkBinSub m:val="--"/>
<m:smallFrac m:val="off"/>
<m:dispDef/>
<m:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[if gte mso 10]>
<style>
/* Style Definitions */
table.MsoNormalTable
{mso-style-name:"Table Normal";
mso-tstyle-rowband-size:0;
mso-tstyle-colband-size:0;
mso-style-noshow:yes;
mso-style-priority:99;
mso-style-parent:"";
mso-padding-alt:0in 5.4pt 0in 5.4pt;
mso-para-margin-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;
mso-bidi-font-family:"Times New Roman";
mso-bidi-theme-font:minor-bidi;}
</style>
<![endif]--><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1027"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1"/>
</o:shapelayout></xml><![endif]-->
</div>
<div class="MsoNormal">
Ensuring software quality is a challenging
task in the current dynamics with <b>aggressive timelines, changing business requirements, increasing enterprise-level constraints </b>and <b>demanding user experience expectations</b>.</div>
<div class="MsoNormal">
</div>
<div class="MsoNormal">
These challenges make the development team's task more demanding and often there is a dilemma on how to balance between <i><b>software cost (more time for ensuring quality) vs. software quality.</b> </i><br />
<i><br /></i>
<b>In this blog, I am sharing my thoughts based on my experience & research on this subject area.</b><i><b><br /></b></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<u><b>How do we define Software Quality?</b></u></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>"the degree to which a set of static attributes of a software product satisfy stated and implied needs for the software product to be used under specified conditions"</i> - (ISO 25010)</div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
As we have both functional (<i>critical to business stakeholders)</i> & non-functional (<i>critical to technical stakeholders</i>) aspects when assessing quality of software system, it can be expressed as:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix_5Mf3WgY8jQzdZscYBYd3rEs2h8arCjmR2aPsyZQ2NJSI8ZWVdPxa9bAGL6hrwPciBdZUHCcjfOirQ5cILZHdWH2sURWrnyWPggeXtzhQxjpF7uDAzD0pLrNOv2jV9kUMT0wO1QehheA/s1600/code-quality.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEix_5Mf3WgY8jQzdZscYBYd3rEs2h8arCjmR2aPsyZQ2NJSI8ZWVdPxa9bAGL6hrwPciBdZUHCcjfOirQ5cILZHdWH2sURWrnyWPggeXtzhQxjpF7uDAzD0pLrNOv2jV9kUMT0wO1QehheA/s1600/code-quality.gif" /></a></div>
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
In this blog, focus is on improving the structural quality of software, which eventually impacts functional quality aspects as well.<br />
<br />
<u><b>How do we define Structural Quality?</b></u><br />
<br />
<i>"the degree to which non-functional attributes of a software product such as maintainability, modularity, robustness, etc. satisfy stated & implied needs for the software product"</i><br />
<br />
Some structural quality attributes such as <i>performance & security </i>can be measured using static/dynamic code-metrics tool, whereas few attributes like <i>modularity & maintainability </i>might require manual review process.<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
</div>
<div class="MsoNormal">
<u><b>What are the focus areas to ensure Software Quality?</b></u><br />
<br />
Often, we are reactive as opposed to being proactive in addressing quality. Quality starts early & hence process needs to be established across all phases of SDLC:<br />
<ul style="text-align: left;">
<li>Requirements</li>
<li>Architecture</li>
<li>Design </li>
<li>UI Development <i>(considering increasing focus on user experience, this is a must to consider it as a SDLC phase) </i></li>
<li>Development </li>
<li>Testing</li>
<li>Maintenance </li>
</ul>
Each SDLC phase needs to have clearly defined quality process with transparent entry/exit criteria based on <i>ETVX (Entry/Task/Verification/Exit) model</i> & supported by following:<br />
<ul style="text-align: left;">
<li><b>Templates </b>– Aims to make sure agreed skeleton for artifacts</li>
<li><b>Standards & Guidelines</b> – Aims to make sure actions are predictable, detailed & repeatable</li>
<li><b>Checklist </b>– Aims to make sure there is consistency in completeness </li>
<li><b>Tools </b>– Aims to support & bring efficiency in process and also bring consistency in usage across </li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtOtd7MyTj03VrPlmti-gRlKDQWBbUeBNXqJWyu61lnO-rNoQa4v9jMB-dFhDaHKLQ3JrbMOQr3IUdBJj6Rk6fNi21soVCGcoKq9O2ShBiC_9lSvDZcdpk4jQyOxrB6DIZ-gm4zsaA0Tgo/s1600/Templates.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtOtd7MyTj03VrPlmti-gRlKDQWBbUeBNXqJWyu61lnO-rNoQa4v9jMB-dFhDaHKLQ3JrbMOQr3IUdBJj6Rk6fNi21soVCGcoKq9O2ShBiC_9lSvDZcdpk4jQyOxrB6DIZ-gm4zsaA0Tgo/s1600/Templates.gif" height="237" width="400" /></a></div>
<br />
<br />
<u><b>What are the metrics & tools to measure Software Quality?</b></u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY9X82kr1Sug09M7a4PtH8zHWzQj87VAzT8SyTkpRErM8ILvNM_h9hv5HIcWf8fI82fjFSGbPJAJFECzLEMX7EODl5LGvWL4IH3dAudRfoVjte1mPyXFfJbQpFsxNGPBlatOBJeflzx6WS/s1600/metrics.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjY9X82kr1Sug09M7a4PtH8zHWzQj87VAzT8SyTkpRErM8ILvNM_h9hv5HIcWf8fI82fjFSGbPJAJFECzLEMX7EODl5LGvWL4IH3dAudRfoVjte1mPyXFfJbQpFsxNGPBlatOBJeflzx6WS/s1600/metrics.gif" /></a></div>
<br />
<br />
<u><b>How do we provide governance to keep check on Software Quality?</b></u><br />
<ul style="text-align: left;">
<li>Governance needs to be very simple & effective. A very complicated structure & complicated process does not go well with team and often people tend to deviate from it.</li>
<li>A periodic checkpoint with team as part of governance model is must and needs to be informal to assess actual health of the software system.</li>
<li>Finally, a simplistic viewpoint (either using any tool) or even manual dashboard can bring transparency & visibility to the system (clearly defined KPIs to track quality parameters)</li>
</ul>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZM44ixUpDLAvuftsMkdbTIXuZgi11G9aVriKkzp1AKukKYKBJTHCZOmpDaHzfMnQbJJqIcMSssUFzCGRwAiNpNwZNPn0FuMZA7b49vJe1I48m8Mozjymi1Hcwr_EAfDJ_5j6DFyZoyB1E/s1600/dashboard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_vcv7cIGGb5W5gNwanTmQhWV6GazK9kTCCbmXs8h-e69Naze_xwqOX4NFOEgAV_Ep5TUSVBG6WrFKAUgDNxVmFKtByNX8Q7XUAp90FG2q9i7X9o_zVMxMcODx7lmM9ZKI6akuSf7QYNoX/s1600/Dashboard.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_vcv7cIGGb5W5gNwanTmQhWV6GazK9kTCCbmXs8h-e69Naze_xwqOX4NFOEgAV_Ep5TUSVBG6WrFKAUgDNxVmFKtByNX8Q7XUAp90FG2q9i7X9o_zVMxMcODx7lmM9ZKI6akuSf7QYNoX/s1600/Dashboard.gif" /></a></div>
<u><b><br /></b></u>
<u><b><br /></b></u>
<u><b>Do we have any future vision (as-is & to-be map)?</b></u><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCMZuRhkppxiaUf3MpMDkIZ4GTb79P1Z4O7bMXKez21AYSgTEdTyh_3i_RVqfG5WuSSdFyTDLZaesNmrSqCF05JZaD3W5nSaYX9QJlSRWkIhwj0m2sNY0Q2v7ZWguu35_rhaR1yWWW4sn4/s1600/future.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCMZuRhkppxiaUf3MpMDkIZ4GTb79P1Z4O7bMXKez21AYSgTEdTyh_3i_RVqfG5WuSSdFyTDLZaesNmrSqCF05JZaD3W5nSaYX9QJlSRWkIhwj0m2sNY0Q2v7ZWguu35_rhaR1yWWW4sn4/s1600/future.gif" height="281" width="400" /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://3.bp.blogspot.com/-v9kOxXVq3hY/U2zQFJ758zI/AAAAAAAACc0/XR9Eyr44oDg/s1600/Future.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-ezhRAzbYiXI/U2zBq3i3dsI/AAAAAAAACcM/JZcCTyWACYA/s1600/Future.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br /></a></div>
<div class="separator" style="clear: both; text-align: center;">
</div>
</div>
<div class="MsoNormal">
<ul style="text-align: left;">
<li>Moving from Subjective Development Quality towards Measurable Development Quality is very important. If we don't know how to measure quality, then it can't be measured against any internal/external benchmark.</li>
<li>Quality Governance Model is often ignore and not well established or not followed. Having Architecture Review Board, Design Review Board & Quality Review Board (on periodic basis) is a big plus and needs to be supported by Senior Leadership.</li>
<li>Automation is the key to meet aggressive timelines challenge & usually it is less prone to errors. Whether it is code generation, build generation or quality reports automation, it holds key to success.</li>
<li>Having Uniform & Consistent Methods to apply during SDLC phases ensures success with certitude.</li>
<li>Finally, establish benchmarks in your organization to compare quality score of each project. Without knowing where you stand, it's impossible to achieve the targeted goal.</li>
</ul>
<b><i><span style="font-family: 'Times New Roman', serif; font-size: 10pt;">Disclaimer:</span></i></b><br />
<br />
<span style="font-family: 'Times New Roman', serif; font-size: 7.5pt;">All data
and information provided on this site is for informational purposes only. This
site makes no representations as to accuracy, completeness, correctness,
suitability, or validity of any information on this site and will not be liable
for any errors, omissions, or delays in this information or any losses,
injuries, or damages arising from its display or use. All information is
provided on an as-is basis.This is a personal weblog. The opinions expressed
here represent my own and not those of my employer or any other organization.</span><br />
<ul style="text-align: left;">
</ul>
</div>
</div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com3tag:blogger.com,1999:blog-2368166884378082804.post-65726227087435418922014-01-15T22:15:00.001-08:002014-01-15T22:27:00.855-08:00Zero Downtime of Coherence Infrastructure (24x7 Availability) as part of Planned Deployment Strategy<div dir="ltr" style="text-align: left;" trbidi="on">
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><br />
Coherence is a</span></b><span style="font-family: 'Times New Roman', serif; font-size: 12pt;"> <b>reliable
in-memory data grid produc</b>t offering OOTB failover & continuous
availability with extreme scalability. But we at times, face challenges during
Coherence deployment and tend to lean towards clean restart of entire Coherence
Cluster. This defeats the purpose of 24x7 availability of data grid layer and
eventually the availability of dependent applications as well.</span><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Times New Roman', serif; font-size: 12pt;">I came
across this discussion with several people and hence sharing my thoughts on the
entire Coherence Deployment Strategy, which does not require any downtime <b>ensuring continuous availability.</b><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><br /></span>
<span style="font-family: 'Times New Roman', serif; font-size: 12pt;">In my
opinion, there are particularly <b><u>three high-level scenarios</u></b> with
respect to Coherence deployment:</span><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><u><span style="font-family: 'Times New Roman', serif; font-size: 12pt;">Scenario
1 - Deployment of Application, which is using Coherence Data Grid Layer</span></u></b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div>
<ul type="disc">
<li class="MsoNormal"><b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Problem Statement:</span></b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"> Typically, this is the case when
there are multiple web or native applications backed-up by Coherence data
grid layer. Often, infrastructure team tends to restart Coherence Cluster
during the process of deployment causing downtime to cache layer &
eventually the entire application. This causes <b>extended downtime
of entire application</b> (even hours) as clean restart of Coherence
usually takes time.</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Solution Approach: </span></b><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<ul type="circle">
<li class="MsoNormal"><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">As a best practice, <b>Coherence Cluster shutdown &
restart should be avoided wherever possible.</b> Coherence does not
require to be cleanly restarted unless there are changes in libraries
(which is second scenario below).</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">If there is requirement to clean-up existing Cache entries and
replace them with new cache entries, then it is more of a change in
application version maintenance of cache items than cache system.
Typically, <b>each cache item can have version information (getter
method like <i>getVersion()</i>)</b> attached to it and post
deployment, previous version entries can be discarded by the
application. </span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">You can also refer to <b>Cache Invalidation Strategies</b>,
which comes as an OOTB feature in Coherence.</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
</ul>
</ul>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><u><span style="font-family: '', serif, '', serif; font-size: 12pt;">Scenario 2 - Deployment of Application with
updated Coherence Application Libraries, which is using Coherence Data Grid
Layer</span></u></b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div>
<ul type="disc">
<li class="MsoNormal"><b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Problem Statement: </span></b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">This scenario is
applicable in cases where there is usage of Coherence Application Cache particularly
where read-through or write-through patterns are implemented. In this
case, application specific JAR files or libraries need to be updated on
Coherence Nodes & hence infrastructure team tends to shutdown
entire Coherence Cluster with clean restart.</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Solution Approach: </span></b><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<ul type="circle">
<li class="MsoNormal"><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">As a best practice, <b>Coherence Cluster shutdown &
restart should be avoided wherever possible.</b></span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">A cyclic restart (or rolling restart)</span></b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"> can help in this case along with version based maintenance
& cache invalidation strategies of cache items (as explained in
scenario 1).</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><b><i><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Note that invalidation or cache item clean-up plays critical role as
even if Coherence Nodes get restarted, data will get automatically
backed-up in data grid layer (by other nodes).</span></i></b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"> In essence, failover feature is acting against clean deployment
in this case and hence need to be careful in clean-up approach in this
case.</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
</ul>
</ul>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><u><span style="font-family: 'Times New Roman', serif; font-size: 12pt;">Scenario
3 - Coherence Configuration Change as part of Deployment</span></u></b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div>
<ul type="disc">
<li class="MsoNormal"><b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Problem Statement: </span></b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">This scenario is
applicable in cases where there are changes in Coherence Configuration
(Cluster Configuration or otherwise). <b><i>Note that even if there
is any difference (even minor) in configuration of any Coherence Node, it
will get rejected by Coherence Cluster.</i></b> For example, if there
is change in Security Configuration (using override file) or TTL change or
Coherence Edition Change.</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Solution Approach: </span></b><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<ul type="circle">
<li class="MsoNormal"><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">The easiest approach is to shutdown entire Coherence Cluster (JMX
monitoring can help to make sure all Coherence Nodes are down) and post
configuration change, restart all nodes. But it defeats our purpose of
ZERO DOWNTIME.</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">If Zero downtime is needed,</span></b><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"> then we
need to:</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<ul type="square">
<li class="MsoNormal"><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Setup an entirely new Coherence Cluster (e.g. by assigning a new
multicast IP address or change of mutlicast port)</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Make Configuration Changes & do fresh deployment on
new cluster</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Do cyclic restart of dependent application servers using new
Coherence Cluster setup</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
<li class="MsoNormal"><span style="font-family: ""serif"","serif"; font-size: 12.0pt; mso-bidi-font-family: "Times New Roman"; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;">Discard Old Coherence Cluster post migration of old applications to
new Coherence Cluster</span><span style="font-family: "Times New Roman","serif"; font-size: 13.5pt; mso-fareast-font-family: "Times New Roman"; mso-no-proof: no;"><o:p></o:p></span></li>
</ul>
</ul>
</ul>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Times New Roman', serif; font-size: 12pt;">There
can be multiple other deployment scenarios possible but they can be variation
of scenarios described above (at least in my mind).</span><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Times New Roman', serif; font-size: 12pt;">Hope it
helps to all those people who are seeking <b>Zero Downtime Deployment
without paying extra</b> for other products like <i>Oracle GoldenGate</i> to
achieve the same.</span><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Times New Roman', serif; font-size: 12pt;"><br />
</span><b><i><span style="font-family: 'Times New Roman', serif; font-size: 10pt;">Disclaimer:</span></i></b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div>
<br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<span style="font-family: 'Times New Roman', serif; font-size: 7.5pt;">All data
and information provided on this site is for informational purposes only. This
site makes no representations as to accuracy, completeness, correctness,
suitability, or validity of any information on this site and will not be liable
for any errors, omissions, or delays in this information or any losses,
injuries, or damages arising from its display or use. All information is
provided on an as-is basis.This is a personal weblog. The opinions expressed
here represent my own and not those of my employer or any other organization.</span><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div>
</div>
</div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com0tag:blogger.com,1999:blog-2368166884378082804.post-30707531396602886152013-05-07T04:02:00.003-07:002013-05-07T04:04:46.469-07:00Comparing Open Source Web Services Development Framework (Apache CXF, Apache AXIS, Spring WS)<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
This blog does not try to compare all available Web Services Development Framework but focuses only on three popular approaches regarding Open Source frameworks: <b><i>Apache CXF, Apache AXIS & Spring WS.</i></b><br />
<div>
<br /></div>
<div>
Let's look at positives & concerns in nutshell of each of these frameworks:</div>
<div>
<br />
<table border="1" cellpadding="0" cellspacing="0" class="MsoTableMediumGrid3Accent5" style="border-collapse: collapse; border: none; mso-border-alt: solid white 1.0pt; mso-border-themecolor: background1; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 1184;">
<tbody>
<tr>
<td style="background: #4BACC6; border-bottom: solid white 3.0pt; border: solid white 1.0pt; mso-background-themecolor: accent5; mso-border-bottom-themecolor: background1; mso-border-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 72.9pt;" valign="top" width="122"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="color: white; mso-themecolor: background1;">Framework<o:p></o:p></span></b></div>
</td>
<td style="background: #4BACC6; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-background-themecolor: accent5; mso-border-bottom-themecolor: background1; mso-border-left-alt: solid white 1.0pt; mso-border-left-themecolor: background1; mso-border-right-themecolor: background1; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 246.3pt;" valign="top" width="411"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="color: white; mso-themecolor: background1;">Key
Positives<o:p></o:p></span></b></div>
</td>
<td style="background: #4BACC6; border-bottom: solid white 3.0pt; border-left: none; border-right: solid white 1.0pt; border-top: solid white 1.0pt; mso-background-themecolor: accent5; mso-border-bottom-themecolor: background1; mso-border-left-alt: solid white 1.0pt; mso-border-left-themecolor: background1; mso-border-right-themecolor: background1; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 159.6pt;" valign="top" width="266"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="color: white; mso-themecolor: background1;">Key
Concerns<o:p></o:p></span></b></div>
</td>
</tr>
<tr>
<td style="background: #4BACC6; border-bottom: none; border-left: solid white 1.0pt; border-right: solid white 3.0pt; border-top: none; mso-background-themecolor: accent5; mso-border-left-themecolor: background1; mso-border-right-themecolor: background1; mso-border-top-alt: solid white 1.0pt; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 72.9pt;" valign="top" width="122"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="color: white; mso-themecolor: background1;">Apache
AXIS2<o:p></o:p></span></b></div>
</td>
<td style="background: #A5D5E2; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-background-themecolor: accent5; mso-background-themetint: 127; mso-border-bottom-themecolor: background1; mso-border-left-alt: solid white 1.0pt; mso-border-left-themecolor: background1; mso-border-right-themecolor: background1; mso-border-top-alt: solid white 1.0pt; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 246.3pt;" valign="top" width="411"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❶ Most Commonly Used, Matured
& Stable Web Services Development Framework<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❷ Supports
Multiple Languages (C++, Java)<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❸ Supports both Contract-first
& Contract-last Approach<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❹ In
context of Orchestration & Web Services Transaction (long-running
transactions) it supports wide variety of related WS-* specifications:<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<i>WS-Atomic Transaction,
WS-Business Activity, WS-Coordination, WS-Eventing, WS-Transfer<o:p></o:p></i></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<i>Compatible
with Spring Framework</i><o:p></o:p></div>
</td>
<td style="background: #A5D5E2; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-background-themecolor: accent5; mso-background-themetint: 127; mso-border-bottom-themecolor: background1; mso-border-left-alt: solid white 1.0pt; mso-border-left-themecolor: background1; mso-border-right-themecolor: background1; mso-border-top-alt: solid white 1.0pt; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 159.6pt;" valign="top" width="266"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❶ Comparatively More Code
Required/Generated w.r.t. Spring WS/CXF<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❷ Is
being phased out gradually (mostly by Apache CXF)<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❸ It is not fully compliant for
JAX-WS JAX-RS<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #4BACC6; border-bottom: none; border-left: solid white 1.0pt; border-right: solid white 3.0pt; border-top: solid white 1.0pt; mso-background-themecolor: accent5; mso-border-left-alt: solid white 1.0pt; mso-border-left-themecolor: background1; mso-border-left-themecolor: background1; mso-border-right-alt: solid white 3.0pt; mso-border-right-themecolor: background1; mso-border-right-themecolor: background1; mso-border-top-alt: solid white .75pt; mso-border-top-themecolor: background1; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 72.9pt;" valign="top" width="122"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="color: white; mso-themecolor: background1;">Apache
CXF<o:p></o:p></span></b></div>
</td>
<td style="background: #D2EAF1; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-background-themecolor: accent5; mso-background-themetint: 63; mso-border-alt: solid white .75pt; mso-border-bottom-themecolor: background1; mso-border-left-alt: solid white .75pt; mso-border-left-themecolor: background1; mso-border-right-themecolor: background1; mso-border-themecolor: background1; mso-border-top-alt: solid white .75pt; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 246.3pt;" valign="top" width="411"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❶
Most widely used Web Services Standard Now; Improvement over AXIS2, which is
now gradually being replaced by Apache CXF<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❷ Intuitive & Easy to Use
(less coding required as compared to AXIS2)<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❸
Clean separation of front-ends, like JAX-WS, from the core code<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❹ Fully compliant with JAX-WS,
JAX-RS & others<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❺
Best Performance across all available framework with minimum
computation overhead<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❻ Supports wide variety of
front-end models<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❼
Supports both JAX-WS & JAX-RS (for Restful Services) <o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❽
Supports JBI & SDO (not supported in AXIS2)<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❾
Compatible with Spring Framework<o:p></o:p></div>
</td>
<td style="background: #D2EAF1; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-background-themecolor: accent5; mso-background-themetint: 63; mso-border-alt: solid white .75pt; mso-border-bottom-themecolor: background1; mso-border-left-alt: solid white .75pt; mso-border-left-themecolor: background1; mso-border-right-alt: solid white 1.0pt; mso-border-right-themecolor: background1; mso-border-right-themecolor: background1; mso-border-themecolor: background1; mso-border-top-alt: solid white .75pt; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 159.6pt;" valign="top" width="266"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❶
Does not support Orchestration & WS Transactions yet<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❷ Does not support WSDL 2.0
yet<o:p></o:p></div>
</td>
</tr>
<tr>
<td style="background: #4BACC6; border-right: solid white 3.0pt; border: solid white 1.0pt; mso-background-themecolor: accent5; mso-border-right-themecolor: background1; mso-border-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 72.9pt;" valign="top" width="122"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<b><span style="color: white; mso-themecolor: background1;">Spring
WS<o:p></o:p></span></b></div>
</td>
<td style="background: #A5D5E2; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-background-themecolor: accent5; mso-background-themetint: 127; mso-border-bottom-themecolor: background1; mso-border-left-alt: solid white 1.0pt; mso-border-left-themecolor: background1; mso-border-right-themecolor: background1; mso-border-top-alt: solid white 1.0pt; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 246.3pt;" valign="top" width="411"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❶ Best in terms of supporting
Contract-first Web Services Development Approach<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❷ Enforces
Standards & Best Practices by Framework Constraints (no way out of it
& hence limitation as well)<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❸ Supports Spring Annotations as well
as JAX-WS<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❹ Least
code from developer’s perspective<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❺ Best Aligned with Spring Technology
Stack (also similar architectural stack as Spring MVC) including Spring
Security<o:p></o:p></div>
</td>
<td style="background: #A5D5E2; border-bottom: solid white 1.0pt; border-left: none; border-right: solid white 1.0pt; border-top: none; mso-background-themecolor: accent5; mso-background-themetint: 127; mso-border-bottom-themecolor: background1; mso-border-left-alt: solid white 1.0pt; mso-border-left-themecolor: background1; mso-border-right-themecolor: background1; mso-border-top-alt: solid white 1.0pt; mso-border-top-themecolor: background1; padding: 0in 5.4pt 0in 5.4pt; width: 159.6pt;" valign="top" width="266"><div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❶ Least number of WS-* Specifications
supported (does not fully compliant with JAX-WS)<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❷ Spring
offers itself as standard & hence other Java-compliant frameworks support
better standards support<o:p></o:p></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
<br /></div>
<div class="MsoNormal" style="margin-bottom: 0.0001pt;">
❸ Only support Contract-first Web
Services Development Model<o:p></o:p></div>
</td>
</tr>
</tbody></table>
<br />
<div class="MsoNormal">
<br /></div>
</div>
<div>
I have carried out further detailed analysis (using a scorecard) to grill these frameworks further & came up with following <b>scorecard</b>:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihEMlztcGLx2Qul-jaA9WyOJ9t8UoCfbfEP9EEzeRxQKlo8APZFoliWex2t3CnpWnRnEIWRS4bRa3oZ81IWKaD-kvCzq_snqlJxm8q72qDtMZc3GU4301YQjQpwv4LiI1ZwOidR-rqL94p/s1600/overall.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="133" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihEMlztcGLx2Qul-jaA9WyOJ9t8UoCfbfEP9EEzeRxQKlo8APZFoliWex2t3CnpWnRnEIWRS4bRa3oZ81IWKaD-kvCzq_snqlJxm8q72qDtMZc3GU4301YQjQpwv4LiI1ZwOidR-rqL94p/s400/overall.png" width="400" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhySb22pdr6A9LiuslJUvmajKRuMIrxhGyjV18rIPze0DwPn6iZ2VVc_o2X4s9E_cLSdsLPksMAPxjjG2RNYDkixHoFly951Vo7G9VIVltvAqZsrTFQF7V2BTz8rcUPa0MSx0eIbaxruRfJ/s1600/fw-eval.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img alt="" border="0" height="496" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhySb22pdr6A9LiuslJUvmajKRuMIrxhGyjV18rIPze0DwPn6iZ2VVc_o2X4s9E_cLSdsLPksMAPxjjG2RNYDkixHoFly951Vo7G9VIVltvAqZsrTFQF7V2BTz8rcUPa0MSx0eIbaxruRfJ/s640/fw-eval.png" title="Criteria Based Evaluation of WS Framework" width="640" /></a></div>
<div style="font-weight: bold; text-decoration: underline;">
<br /></div>
<div style="font-weight: bold; text-decoration: underline;">
Conclusion</div>
<br />
<br />
<ul style="text-align: left;">
<li>Apache AXIS2 is relatively most used framework but Apache CXF scores over other Web Services Framework comparatively considering ease of development, current industry trend, performance, overall scorecard and other features (unless there is Web Services Orchestration support is explicitly needed, which is not required here)</li>
<li>Though Spring Core Framework is an established technology, Spring Web Services is still evolving in comparison with Apache CXF and CXF has wider support of standards and proven framework from performance perspective.</li>
<li><b><i>Hence, Apache CXF is the recommended framework and clearly the most preferred in my opinion.</i></b></li>
</ul>
<br />
<b><i><span style="font-size: x-small;">Disclaimer:</span></i></b><br />
<span style="font-size: xx-small;">All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, correctness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.</span><br />
<br />
<div style="font-weight: bold; text-decoration: underline;">
<br /></div>
</div>
<div>
<br /></div>
</div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com15tag:blogger.com,1999:blog-2368166884378082804.post-52930763775244957392012-06-01T08:11:00.000-07:002014-10-13T21:29:38.368-07:00Code Quality Process/Guidelines for Development Team<div dir="ltr" style="text-align: left;" trbidi="on">
<br />
<b><u>Code Quality Process</u></b> needs to be established at the start of development
cycle so that all stakeholders (developers, PM, architects, etc.) will be
aligned to same objective of delivering quality code.<br />
<div style="height: 8pt; min-height: 8pt; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;">
<br /></div>
The following <span style="text-decoration: underline;"><strong>Code Quality
Process is based on my learnings and can be customized further to cater as per
any project needs:</strong></span><br />
<span style="text-decoration: underline;"><strong><br /></strong></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE30-pZIqK302WNDKYNfKk8S4pnepyKceXs1W-38osVuKU3B4X10Gn0lOUqn1MEgAfNapihaRKuds3u3oUBuWtYoUCgxBOoXumxQD79wdgAzMc-FwduxLo6kiGsgmC7qgFZu9_f6w2MNzl/s1600/Code_Quality.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjE30-pZIqK302WNDKYNfKk8S4pnepyKceXs1W-38osVuKU3B4X10Gn0lOUqn1MEgAfNapihaRKuds3u3oUBuWtYoUCgxBOoXumxQD79wdgAzMc-FwduxLo6kiGsgmC7qgFZu9_f6w2MNzl/s1600/Code_Quality.png" height="433" width="640" /></a></div>
<span style="text-decoration: underline;"><strong><br /></strong></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<span style="text-decoration: underline;"><strong><br /></strong></span>
<span style="text-decoration: underline;"><strong>Also, to track Code Quality throughput development cycle, a tool (excel based) like this below can be used by team pro-actively:</strong></span><br />
<span style="text-decoration: underline;"><strong><br /></strong></span>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiApJJdHca7dP0M1UfiL69CtSEIKM7zmpXpNaSne6cEPw7eHIjK6RqnVRl2pFPq17Ew48U5Q2x1-L5CR8-OS_jQl9D9hR-dOyn6D_f0CM6_uGwM6rt3jTJzzUME0sZJZc06jXbApq1CEJPG/s1600/Development_SOD.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiApJJdHca7dP0M1UfiL69CtSEIKM7zmpXpNaSne6cEPw7eHIjK6RqnVRl2pFPq17Ew48U5Q2x1-L5CR8-OS_jQl9D9hR-dOyn6D_f0CM6_uGwM6rt3jTJzzUME0sZJZc06jXbApq1CEJPG/s640/Development_SOD.jpg" height="218" width="640" /></a></div>
<span style="text-decoration: underline;"><strong><br /></strong></span>
<span style="text-decoration: underline;"><strong><br /></strong></span>
<span style="text-decoration: underline;"><strong><br /></strong></span></div>
Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com2tag:blogger.com,1999:blog-2368166884378082804.post-73922502450178208932011-12-06T22:23:00.000-08:002011-12-06T22:23:42.466-08:00Evolving Architecture Formulization Process in Enterprise 2.0 way<div dir="ltr" style="text-align: left;" trbidi="on"><br />
<div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;">Software architecture in currently in practice across the organizations is rapidly adapting itself, either in organic or in-organic way in response to dynamic organizational environment today with massive social media presence. Many organizations have recognized the presence of Social Media Platforms by embracing formal enterprise 2.0 platforms whereas others have at least started recognizing the importance of the same. Software architecture practice is also positively evolved & reached into a new era where way of interaction, presentation & feedback for architecture are changing day by day.<o:p></o:p></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><br />
</div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;">Entire architecture development process has revolutionized with Enterprise 2.0 in place and in my opinion, its impact on architecture can be outlined as below at abstract level:<o:p></o:p></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><br />
</span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;">Social Networking</span></b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;">Social Networking Software specially targeted for architect’s community can help share relevant experience informally in unstructured way without any boundaries. It can span within organization, across organizations & across the globe. Social networking sites like Facebook, LinkedIn are great example of people talking informally about architectural & design decision informally.<o:p></o:p></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><br />
</div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;">Social Collaboration & Feedback</span></b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;">Social Collaboration is the most happening & useful resource in the field of architecting within an enterprise. Internal wikis, blogs, collaborative office & virtual worlds are key features in this space. One of the greatest examples I have observed developing best practices guide for architecting eCommerce application from experts across the enterprise collaborating through Social Collaboration platform built using Jive.<o:p></o:p></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;">Social feedback inside enterprise about architectural decisions & best practices are becoming common practice on day-to-day basis for enterprise adopting Enterprise 2.0. This elevates quality of artifacts & also helps in diminishing boundaries between developers, architects & other senior management professionals giving feedback on the same platform.<o:p></o:p></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><br />
</div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 7pt;"> </span><b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;">Social Media</span></b><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;"><o:p></o:p></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt;"><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt;">Sharing architectural artifacts have never been easy with tools in social media categories like social tagging, bookmarking & content posting like Flickr, Digg. This aides to further communication in promoting links, bookmarks, etc, such as enterprise architecture goals, objectives & vision, which are important for architect’s community in the enterprise.<o:p></o:p></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 1in; margin-right: 0in; margin-top: 0in; text-indent: -0.25in;"><br />
</div><div class="MsoNormal"><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt; line-height: 115%;">In summary, software architecture needs to keep adapting itself to ever changing environment and adequate support is needed at enterprise level by management to support the same to evolve with social media in place. Recognizing its presence will not only increase productivity of architecture development but also will develop culture of immediate feedback & open culture.<o:p></o:p></span></div><div class="MsoNormal"><span style="font-family: 'Times New Roman', serif; font-size: 13.5pt; line-height: 115%;"><br />
</span></div><div class="MsoNormal"><b><i><span style="background: white; color: #333333; font-family: "Trebuchet MS","sans-serif"; font-size: 10.0pt; line-height: 115%;">Disclaimer:</span></i></b><span style="color: #333333; font-family: "Trebuchet MS","sans-serif"; font-size: 10.0pt; line-height: 115%;"><br style="text-align: -webkit-auto;" /> <i style="text-align: -webkit-auto;"><span style="background: white;">All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, currentness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.</span></i></span><o:p></o:p></div></div>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com2tag:blogger.com,1999:blog-2368166884378082804.post-39404541554651053882011-08-11T00:09:00.000-07:002011-08-12T08:05:24.319-07:00Oracle Coherence Best Practices for Session Management (Replication) in Clustered Application Servers Environment<div dir="ltr" style="text-align: left;" trbidi="on"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Oracle Coherence is a <i><b>in-memory data grid </b></i>product, which is also being used commonly for Session Replication across cluster of application server nodes. It supports wide variety of application servers like WebLogic, WebSphere, Tomcat, JBoss, etc. Coherence*Web is Session Management module (built on top of Coherence) used for managing session information in clustered environment.</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">I would recommend following best practices w.r.t. Coherence*Web & Coherence usage particularly for Session Management (it can also be applied in other Coherence scenarios):</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><u><span style="font-size: 14pt;">Coherence Deployment Topology</span></u></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Coherence supports three deployment modes: </div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .5in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><b>In-process -</b> Application servers that run Coherence*Web are storage-enabled, so that the HTTP session storage is co-located with the application servers. No separate cache servers are used for HTTP session storage.</div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .5in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><b>Out-of-process -</b> The application servers that run Coherence*Web are storage-disabled members of the Coherence cluster. Separate cache servers are used for HTTP session storage.</div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .5in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><b>Out-of-Process with Coherence*Extend -</b> The application servers that run Coherence*Web are not part of a Coherence cluster; the application servers use Coherence*Extend to attach to a Coherence cluster which contains cache servers used for HTTP session storage.</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><i>Recommendation: </i></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">If there is need for Coherence to extend its boundaries beyond core Coherence TCMP (internal protocol used by Coherence), use Coherence*Extend, which supports Java, .Net & C++ clients.</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">In most of the scenarios, <b>out-of-process is recommended topology </b>because it has dedicated cache server nodes running independently <b><i>promoting loose-coupled physical architecture</i></b>. </div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b>For Session Replication,</b> sharing associated application server memory (heap) with Coherence using in-process deployment creates dependability. If application server memory usage increases, it will impact Coherence performance as well & vice-versa. </div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Please make sure the following for Out-of-process configuration:</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Application Server Nodes are running in Storage-disabled mode. You need to pass both of these command-line parameters (or by using Coherence over-ride file) to application server JVM :</div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="background: #CCFFFF; border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 480;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"> <td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 6.15in;" valign="top" width="590"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">-<i>Dtangosol.coherence.session.localstorage=false</i></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><i>-Dtangosol.coherence.distributed.localstorage=false</i></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div></td> </tr>
</tbody></table><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Please note that setting session storage property explicitely is needed as by default it is “true” in “session-cache-config.xml”:</div><table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="background: #CCFFFF; border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 480;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"> <td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 6.15in;" valign="top" width="590"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">…………………. </div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><local-storage system-property="tangosol.coherence.session.localstorage"</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">………………….</div></td> </tr>
</tbody></table><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"> <span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Coherence Dedicated Nodes need to be <b>storage enabled</b> (otherwise there is nobody to store session attributes) and should either use “session-cache-config.xml” or custom cache configuration file with session cache configured in it:</div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="background: #CCFFFF; border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 480;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"> <td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 6.15in;" valign="top" width="590"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><i>java –Xms512m -Xmx512m -cp /usr/local/coherence_3_6/lib/coherence.jar:/usr/local/coherence_3_6/lib/coherence-web-spi.war:/usr/local/coherence_3_6/lib/commons-logging-api.jar:/usr/local/coherence_3_6/lib/log4j-1.2.8.jar</i></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><i> -Dtangosol.coherence.cacheconfig=../../../webapps/example/WEB-INF/classes/session-cache-config.xml</i></b><i> -Dtangosol.coherence.log.level=6 -Dtangosol.coherence.ttl=2 -Dtangosol.coherence.log=log4j -Dtangosol.coherence.edition=EE </i></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><i>-Dtangosol.coherence.session.localstorage=true</i></b><i> com.tangosol.net.DefaultCacheServer</i></div></td> </tr>
</tbody></table><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><u><span style="font-size: 14pt;">Coherence Cache Topology</span></u></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Coherence supports five different types of Cache based upon four cache topologies:</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Local Cache Topology: <i>Local Cache</i></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Partitioned Cache Topology: <i>Distributed (or Partitioned Cache)</i></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Replicated Cache Topology: <i>Replicated Cache, Optimistic Cache</i></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Hybrid Topology (Local + Partitioned): <i>Near Cache</i></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">You can use following simple guidelines in choosing appropriate type of cache:</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 480;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0;"> <td style="background: #CCFFFF; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b>Scenario</b></div></td> <td style="background: #CCFFFF; border-left: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b>Recommended Cache Type</b></div></td> </tr>
<tr style="mso-yfti-irow: 1;"> <td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>You need faster read & write</div><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>You don’t need fault tolerance (caution: no fault tolerance)</div></td> <td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Local Cache</div></td> </tr>
<tr style="mso-yfti-irow: 2;"> <td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>You need <b>faster read</b> with best fault tolerance</div><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>Write will be comparatively good but will have latency for copying updated data across</div><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>Typically used to store metadata or configuration data</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><i>Note: Scale-out (horizontal scalability) can not be linear.</i></div></td> <td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Replicated Cache</div></td> </tr>
<tr style="mso-yfti-irow: 3;"> <td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>You need <b>faster write</b> but best fault tolerance</div><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>Read will be comparatively faster but depend on whether it reads from local or remote node</div></td> <td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Partitioned or Distributed Cache</div></td> </tr>
<tr style="mso-yfti-irow: 4; mso-yfti-lastrow: yes;"> <td style="border-top: none; border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>You need <b>faster write</b> but best fault tolerance</div><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>Read will be comparatively faster but depend on whether it reads from local or remote node</div><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>Affinity boost performance of read-heavy application with moderate writes</div></td> <td style="border-bottom: solid windowtext 1.0pt; border-left: none; border-right: solid windowtext 1.0pt; border-top: none; mso-border-alt: solid windowtext .5pt; mso-border-left-alt: solid windowtext .5pt; mso-border-top-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 221.4pt;" valign="top" width="295"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Near Cache (backed up by Partitioned Cache)</div></td> </tr>
</tbody></table><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><u><span style="font-size: 14pt;">Executing Production Checklist</span></u></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Coherence recommends executing list of checklist on production environment to make sure environment & infrastructure has recommended settings/configurations particularly in following areas:</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Network:</div><div class="MsoNormal" style="margin-left: 1.25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>Multicast Test: If you are using multicast clustering, this test is must to make sure multicast configuration is correct & working properly.</div><div class="MsoNormal" style="margin-left: 1.25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>Datagram Test – Before deploying your application, you must run it to make sure that there is no packet-loss in your network. <b><i>Note that in 1GbE network, you should use 100MB packets for testing & minimum (not average) success rate should be close to 100% (~98-99%)</i></b></div><div class="MsoNormal" style="margin-left: 1.25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>TTL – It is very important setting for multicast network & usually 2-5 is recommended value in production environment</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Hardware, OS & JVM Settings</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Coherence Editions & Modes:</div><div class="MsoNormal" style="margin-left: 1.25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>Needless to say, Coherence mode should be PROD in production environment. It needs to be specified on command-line as override configuration file can not be used for Edition & Mode.<br />
<b><i>-Dtangosol.coherence.mode=PROD</i></b></div><div class="MsoNormal" style="margin-left: 1.25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.25in; text-indent: -.25in;"><span style="font-family: Symbol;">·</span><span style="font-size: 7pt;"> </span>By default, Coherence runs in GE (Grid Edition) & it is very important to use appropriate edition (as per your license & needs) to specify the correct edition.</div><div class="MsoNormal" style="margin-left: 1.25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><i>-Dtangosol.coherence.edition</i>=EE</b></div><div class="MsoNormal" style="margin-left: 1.0in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; text-indent: .25in;"><b><i>Note that all the nodes in cluster should use same edition.</i></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><u><span style="font-size: 14pt;">Executing Performance Tuning Guidelines</span></u></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Coherence suggests tuning for: <b>OS, Network, JVM & Coherence Network.</b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Please refer to Coherence Performance Tuning guidelines (reference section) for more details.</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><u><span style="font-size: 14pt;">Enable JMX for Monitoring Coherence</span></u></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Coherence provides OOTB support for JMX-based monitoring for its cluster, nodes, caches & others.</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">It needs at least one node to act as manager & rest of the nodes in cluster can publish their statistics using JMX.</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">For management node, </div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="background: #CCFFFF; border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 480;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"> <td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 6.15in;" valign="top" width="590"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="font-family: Calibri; font-size: 11pt;">-Dtangosol.coherence.management=all -Dtangosol.coherence.management.remote=true </span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="font-family: Calibri; font-size: 11pt;">-Dtangosol.coherence.management.jvm.all=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.port=<i><nn> </nn></i>-Dcom.sun.management.jmxremote</span></div></td> </tr>
</tbody></table><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">For other nodes, you can simply remove <i>“</i><i><span style="font-family: Calibri; font-size: 11pt;">tangosol.coherence.management”</span></i><span style="font-family: Calibri; font-size: 11pt;"> command-line parameter.</span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="font-family: Calibri; font-size: 11pt;">Also, note that in above case, JMX authentication is not enabled (which needs to be secured) & JMX port needs to be specified as well.</span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><u><span style="font-size: 14pt;">Using Log4J for Coherence Logs</span></u></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Though Coherence has its own logging mechanism, Log4J is more beneficial in terms of log rotation & controlling appropriate log levels. </div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><i>Note that you can use both Coherence Log Level parameter (-Dtangosol.coherence.log.level) & Log4J configuration for logging level.</i></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Follow these steps to <b>enable Log4J for Coherence</b>:</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Coherence does not have log4j libraries & hence you need to add following jars to classpath:</div><div class="MsoNormal" style="margin-left: 1.0in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list 1.0in; text-indent: -.25in;">a.<span style="font-size: 7pt;"> </span>Copy <i>“commons-logging-api.jar”</i> & <i>“log4j-1.2.8.jar”</i> to <coherence_home>/lib folder</coherence_home></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Create/Modify your Log4J XML file & put that in classpath of your Coherence JVM.</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Set command-line parameter (or use override file) to specify log parameter value as “<i>log4j</i>”.<br />
<br />
<br style="mso-special-character: line-break;" /></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><i>Note that Coherence assumes that Log4J XML will have Logger Name as “Coherence” otherwise you need to specify logger name by having separate parameter “tangosol.coherence.log.logger”.</i></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><i>Example:</i></b></div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; text-indent: .5in;"><b><i><u>Cache Server Startup Script</u></i></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="background: #CCFFFF; border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 480;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"> <td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 6.15in;" valign="top" width="590"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="font-family: Calibri; font-size: 11pt;">JAVA_OPTS="-Xms$MEMORY -Xmx$MEMORY <b>-Dtangosol.coherence.log.level=6 -Dtangosol.coherence.log=log4j</b> <b>-Dtangosol.coherence.log.logger=MyCoherence</b>"</span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><span style="font-family: Calibri; font-size: 11pt;">$JAVAEXEC -server -showversion $JAVA_OPTS -cp "$COHERENCE_HOME/lib/coherence.jar:<b>$ "$COHERENCE_HOME/lib/</b></span><b><i>commons-logging-api.jar</i>:</b><b><span style="font-family: Calibri; font-size: 11pt;">$ COHERENCE_HOME/lib/</span><i>log4j-1.2.8.jar</i></b><span style="font-family: Calibri; font-size: 11pt;">" com.tangosol.net.DefaultCacheServer $1</span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div></td> </tr>
</tbody></table><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; text-indent: .5in;"><b><i><u>Log4J XML</u></i></b></div><div class="MsoNormal" style="text-indent: 0.5in;"><b><i><u><br />
</u></i></b></div><table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="background: #CCFFFF; border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 480;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"> <td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 6.15in;" valign="top" width="590"><div class="MsoNormal" style="mso-layout-grid-align: none; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: 36.75pt 73.5pt 110.25pt 147.0pt 183.75pt 220.5pt 257.25pt 294.0pt 330.75pt 367.5pt 404.25pt 441.0pt 477.75pt 514.5pt 551.25pt 588.0pt 624.75pt 661.5pt 698.25pt 735.0pt 771.75pt 808.5pt 845.25pt 12.25in 918.75pt 955.5pt 992.25pt 1029.0pt 1065.75pt 1102.5pt 1139.25pt 1176.0pt; text-autospace: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;">...................... </span></div><div class="MsoNormal"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;"><logger name="MyCoherence"></span></div><div class="MsoNormal" style="mso-layout-grid-align: none; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: 36.75pt 73.5pt 110.25pt 147.0pt 183.75pt 220.5pt 257.25pt 294.0pt 330.75pt 367.5pt 404.25pt 441.0pt 477.75pt 514.5pt 551.25pt 588.0pt 624.75pt 661.5pt 698.25pt 735.0pt 771.75pt 808.5pt 845.25pt 12.25in 918.75pt 955.5pt 992.25pt 1029.0pt 1065.75pt 1102.5pt 1139.25pt 1176.0pt; text-autospace: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;"> <level value="3"/></span></div><div class="MsoNormal" style="mso-layout-grid-align: none; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: 36.75pt 73.5pt 110.25pt 147.0pt 183.75pt 220.5pt 257.25pt 294.0pt 330.75pt 367.5pt 404.25pt 441.0pt 477.75pt 514.5pt 551.25pt 588.0pt 624.75pt 661.5pt 698.25pt 735.0pt 771.75pt 808.5pt 845.25pt 12.25in 918.75pt 955.5pt 992.25pt 1029.0pt 1065.75pt 1102.5pt 1139.25pt 1176.0pt; text-autospace: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;"> <appender-ref ref="CoherenceAppender"/></span></div><div class="MsoNormal" style="mso-layout-grid-align: none; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: 36.75pt 73.5pt 110.25pt 147.0pt 183.75pt 220.5pt 257.25pt 294.0pt 330.75pt 367.5pt 404.25pt 441.0pt 477.75pt 514.5pt 551.25pt 588.0pt 624.75pt 661.5pt 698.25pt 735.0pt 771.75pt 808.5pt 845.25pt 12.25in 918.75pt 955.5pt 992.25pt 1029.0pt 1065.75pt 1102.5pt 1139.25pt 1176.0pt; text-autospace: none;"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;"></span></div><div class="MsoNormal"><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;">.................... </span></div></td> </tr>
</tbody></table><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><u><span style="font-size: 14pt;">Review Coherence*Web Context Parameter</span></u></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">There are several Coherence Web Context Parameters, which need to be adjusted when you are installing Coherence*Web in your web application, particularly following:</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;">coherence-enable-sessioncontext</span></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;">coherence-session-id-length</span></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;">coherence-session-urlencode-enabled</span></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;">coherence-session-thread-locking</span></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;">coherence-sticky-sessions</span></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;">coherence-reaperdaemon-assume-locality</span></div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span><span lang="EN-GB" style="font-family: "Courier New"; font-size: 9pt;">coherence-enable-suspect-attributes</span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><i>Note: These parameters are configured in web.xml & got instrumented when Coherence*Web install utility is invoked.</i></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><u><span style="font-size: 14pt;">Using Coherence as L2 Cache Provider</span></u></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Coherence can also be used as L2 Cache provider for ORM frameworks in-use. Having Coherence as L2 cache enables enterprise level caching for your ORM L2 caches as well. </div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">To configure the same, you need to specify Coherence as L2 Cache Provider (particularly for <b>Hibernate L2 Cache</b>):</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Specify Coherence as L2 Cache provider in Hibernate Configuration file:</div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="background: #CCFFFF; border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 480;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"> <td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 6.15in;" valign="top" width="590"><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b style="mso-bidi-font-weight: normal;"><span style="font-family: Courier; font-size: 9pt;"><</span></b><span style="font-family: Courier; font-size: 9pt;">prop<b style="mso-bidi-font-weight: normal;"> </b>key<b style="mso-bidi-font-weight: normal;">="hibernate.cache.provider_class"></b></span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><span style="font-family: Courier; font-size: 9pt;">com.tangosol.coherence.hibernate.CoherenceCacheProvider</span></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><span style="font-family: Courier; font-size: 9pt;"><</span></b><span style="font-family: Courier; font-size: 9pt;">/prop<b style="mso-bidi-font-weight: normal;">></b></span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div></td> </tr>
</tbody></table><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="margin-left: .75in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; tab-stops: list .75in; text-indent: -.25in;"><span style="font-family: Wingdings;">¨</span><span style="font-size: 7pt;"> </span>Configuration for Hibernate L2 Cache is loaded based on following parameter. There is default L2 Cache configuration file already in place.</div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="margin-left: .5in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="background: #CCFFFF; border-collapse: collapse; border: none; mso-border-alt: solid windowtext .5pt; mso-border-insideh: .5pt solid windowtext; mso-border-insidev: .5pt solid windowtext; mso-padding-alt: 0in 5.4pt 0in 5.4pt; mso-yfti-tbllook: 480;"><tbody>
<tr style="mso-yfti-firstrow: yes; mso-yfti-irow: 0; mso-yfti-lastrow: yes;"> <td style="border: solid windowtext 1.0pt; mso-border-alt: solid windowtext .5pt; padding: 0in 5.4pt 0in 5.4pt; width: 6.15in;" valign="top" width="590"><div class="MsoNormal" style="mso-layout-grid-align: none; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; text-autospace: none;"><br />
</div><div class="MsoNormal" style="mso-layout-grid-align: none; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto; text-autospace: none;"><b style="mso-bidi-font-weight: normal;"><span style="font-family: Courier; font-size: 9pt;">-Dtangosol.coherence.hibernate.cacheconfig</span></b><span style="font-family: Courier; font-size: 9pt;"> = <cache config="" path="">/<b style="mso-bidi-font-weight: normal;">hibernate-cache-config.xml</b></cache></span></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div></td> </tr>
</tbody></table><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><b><u><span style="font-size: 14pt;">References</span></u></b></div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;">Coherence User Guide: <a href="http://download.oracle.com/docs/cd/E18686_01/coh.37/e18690/toc.htm">http://download.oracle.com/docs/cd/E18686_01/coh.37/e18690/toc.htm</a></div><div class="MsoNormal" style="margin-left: .25in; mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
<br />
<br style="mso-special-character: line-break;" /></div><b><i><span style="font-size: 10pt;">Disclaimer:</span></i></b><br />
<i><span style="font-family: "'Times New Roman'"; font-size: 10pt;">All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, currentness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.</span></i><br />
<div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal" style="mso-margin-bottom-alt: auto; mso-margin-top-alt: auto;"><br />
</div><div class="MsoNormal"><br />
</div></div>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com9tag:blogger.com,1999:blog-2368166884378082804.post-27460806217864401362011-06-02T09:14:00.000-07:002011-06-02T09:14:37.396-07:00Is cutting-edge technology the right solution for all business problems?<div dir="ltr" style="text-align: left;" trbidi="on"><br />
<div class="MsoNormal">Technology is fast-paced & keeping up your application stack with latest technology stack available is one of the common problems architects face in today’s world. At one end, vendors keep on pushing their clients to upgrade to latest version or latest patch to make their life easier. On the other hand, existing technology stack becomes outdated & lucrative new options baffles technology people how to go about it!!<br />
</div><div class="MsoNormal">There is no black and white answer to this problem, but these key factors help in making the right decision:</div><ol style="text-align: left;"><li> <b>Context:</b> </li>
</ol><div class="MsoNormal" style="margin-left: .5in;">Unless you understand the context, it does not make sense to make any sensible suggestion at all to any application or enterprise architecture. For example, for a travel website, there is constant competition with other websites to keep experimenting new features, which in turn needs cutting-edge technology or something latest in the market (like mashups). But it might not be a need for stock-trading application.</div><div class="MsoNormal" style="margin-left: .5in;"><i><b>So, it is never “one-solution-fits-all” approach that works in technology!!</b></i></div><div class="MsoNormal" style="margin-left: 0.5in;"><br />
</div><ol start="2" style="margin-top: 0in;" type="1"><li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in;"><b>Problem Area:</b></li>
</ol><div class="MsoNormal" style="margin-left: .5in;">Regular architecture reviews of your application might reveal certain problem areas (e.g. caching system needs to move to enterprise caching) or there is a specific business problem to solve, which needs new technology (e.g. using Amazon S3 for storage). </div><div class="MsoNormal" style="margin-left: .5in;"><i><b>So, 2<sup>nd</sup> point is to pinpoint strong problem area, which demands change in technology (upgrade or replacement).</b></i></div><div class="MsoNormal" style="margin-left: 0.5in;"><br />
</div><ol start="3" style="margin-top: 0in;" type="1"><li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in;"><b>Business Needs:</b></li>
</ol><div class="MsoNormal" style="margin-left: .5in;">Thirdly & most importantly is business need as business stakeholders will be paying for extra cost & hence there has to be very strong business benefits to be realized (e.g. integration with third-party using ESB instead of hub-spoke model). Unless business gets convinced that they will get strategic benefit out of it, it is not possible to sell any technology to them.<br />
<i><b>So, 3rd point is to discover business needs which backs up technology.</b></i></div><div class="MsoNormal" style="margin-left: 0.5in;"><br />
</div><ol start="4" style="margin-top: 0in;" type="1"><li class="MsoNormal" style="mso-list: l0 level1 lfo1; tab-stops: list .5in;"><b>Technology Needs:</b></li>
</ol><div class="MsoNormal" style="margin-left: .5in;">Last but not least, there are technology needs as well (e.g. your Oracle 10.0 will be out of support soon & you need to upgrade to Oracle 11g to get customer support), which can also be a key driver. Also, certain business problems (like lower TCO) can only be solved by implementing strategic major technology solution (like top-down/bottom-up SOA stack).<br />
<i><b>So, 4th point is to discover technical needs in your software or application stack.</b></i> </div><div class="MsoNormal" style="margin-left: .5in;"><br />
</div><div class="MsoNormal" style="margin-left: .5in;">In summary, <i><b>needs create technology not technology create needs</b></i> & hence all the above mentioned points make sense whenever you are going to make any decision on applying new cutting-edge technology. Also, keep in mind that proven technology works best & experimentation might be risky for business continuity. <i>But make sure that innovation (which specially need new technology) does not get killed which makes you one-step ahead in this competitive world!!</i></div></div>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com10tag:blogger.com,1999:blog-2368166884378082804.post-79058559006186824842010-11-26T06:33:00.000-08:002010-11-26T06:33:26.409-08:00In-Memory Data Grid (IMDG) for Linear Horizontal Scalability & Extreme Transaction Processing (XTP)IMDG products offers the capability to handle transactions in-memory (so faster) & facilitates creating a data grid (so linear scalability) for managing extreme processing (XTP) needs.<br />
There are both commercial & open-source products available in market but before deciding upon the product or even using IMDG as technology, I would recommend considering following design/architectural points first:<br />
<u><b>1. Your needs:</b></u> First & foremost, like any other solution, this is the most important factor to determine whether there is a need for such product or not. License cost for commercial product can cost a lost (~ $ 2500/- per processor for enterprise edition) and hence cost-benefit needs to be assessed first. I don’t see the need of it if there is no requirement for XTP (e.g. not needed for <i>< 200 TPS</i>). <br />
<u><b>2. Parallel Computing: </b></u><br />
A distributed grid can offer processing ability similar to a mainframe processing utilizing cumulative capacity of the nodes in the grid. Processing can be seamlessly distributed across available nodes facilitating <i>“parallel query”</i> execution for faster response.<br />
<u><b>3. Caching Needs:</b></u> <br />
All the caching needs can be fulfilled using IMDG products and they offer support to all types of caches, e.g. <i>distribute cache, replicated cache, partitioned cache, local cache with distribute as backup cache.</i> But if you have just caching needs, then you are better off with specific caching related products (see at the end of the article).<br />
<u><b>4. Events based Processing Needs:</b></u><br />
IMDG products support Complex Event Processing (CEP) based business architecture & ability to consume many events in scalable way.<br />
<u><b>5. High Availability (Failover support): </b></u><br />
Failure of any node does not impact the cluster of nodes and as soon as failed node comes back, it starts contributing again seamlessly (without any configuration change or manual efforts). Also, real-time configuration change (e.g. changing cache high units) or product upgrade is possible without any downtime.<br />
<u><b>6. Scalability: </b></u><br />
If there is need to add more nodes to your grid, it is seamless without any impact on existing grid. Mostly, IMDG products offer capabilities to be <i>“linear scalable”</i> to take full advantage of added capacity.<br />
<u><b>7. In-memory Database (IMDB) Support: </b></u><br />
It also offers the entire database to be maintained in memory for faster response, throughput & performance. All the transactions can happen in memory and <i>persisted asynchronously</i> to database during non-peak hours.<br />
<u><b>8. Monitoring & Management:</b></u><br />
Some products great real-time monitoring & management capabilities (also with <i>JMX support</i>) and it is very handy in troubleshooting or in finding out bottlenecks for improvements.<br />
<u><b>9. In-line with Cloud Computing: </b></u><br />
With cloud computing as future, this is more important as it can offer<i> “data as service” or “data virtualization”</i>.<br />
<br />
<u><b>Commercial Products:</b></u><br />
<i>Oracle Coherence (earlier known as Tangosol Coherence), Gigaspaces XAP, IBM WebSphere eXtreme Scale (WXS), Tibco ActiveSpaces (recently launched), ScaleOut StateServer</i><br />
<br />
<u><b>Open-source Products: </b></u><br />
<i>Terracotta, JBoss Infispan, Hazelcast</i><br />
<br />
Other <u><b>Distributed Caching Solutions</b></u> are also available but in my opinion, they are not exactly offering entire IMDG capabilities, but you have only caching needs then they are worth considering (though out of context of this discussion):<br />
<i>NCache (only for Distributed Caching for .Net)</i><br />
<i>Apache JCS, Terracotta EhCache, OpenSymphony OSCache</i><br />
<br />
<b><i><span style="font-size: x-small;">Disclaimer:</span></i></b><br />
<span style="font-size: xx-small;">All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, correctness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.</span>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com5tag:blogger.com,1999:blog-2368166884378082804.post-18300186884077645612010-07-02T03:32:00.000-07:002010-07-02T03:32:04.453-07:00Enterprise Architecture | Why is it important?Enterprise Architecture practice has been there for decades but in last few years it is regaining popularity as it is one of the key initiatives driven by CxOs.<br />
<br />
<em>So, why is it important for an Enterprise? </em><br />
Here are some of the key rationale behind the same:<br />
<br />
<strong>1. Holistic Approach</strong><br />
Individual divisions across the enterprise only address business problems in their vicinity; but EA team will have holistic point-of-view and work towards in addressing the problems across the enterprise.<br />
<em>For example,</em> <em>having a Credit Card Loan Processing System for London division is addressing locale specific business demands but EA team can align this solution at enterprise level & might provide inputs to make it generic for making it reusable across the enterprise.</em><br />
<br />
<strong>2. Consistency in Delivering Solutions to Business Problem</strong><br />
Once we have EA in place, a business solution can be delivered in more structured & consistent way. Established Reference Models for Business Demands <br />
<em>For example, if there is need to develop a Credit Check System, then enterprise reference model (if not available, then Industry Reference Model) will help in establishing consistent architecture for this solution.</em><br />
<br />
<strong>3. Building Enterprise-wide Repository</strong><br />
Repository created in the process of establishing EA in an organization like Tools Repository, Architectural Artifacts Repository will encourage reuse & standardization across the enterprise.<br />
<br />
<strong>4. IT Governance</strong><br />
EA goes hand-in-hand with IT Governance & collaboratively helps in establishing governance across the enterprise, which helps in building controlled & directed corporation. It acts like a framework for leadership, organizational structure, business processes, standards, practices, etc.<br />
<br />
<strong>5. Defined Business/Technical/Information System Architecture:</strong><br />
Last but not least, as part of EA establishment in the organization, a clearly defined business, technical and information system architecture gets developed during the process. This also creates opportunity to business & IT people to come together & re-validate them.<br />
<br />
Some of the popular EA frameworks are <strong><em>TOGAF, Zachman, FEA, Gartner, DoDAF </em></strong>& I have seen most of time there is a custom EA architecture extracting best of the practices/standards/tools from all of them.<br />
<br />
<strong><em>Feel free to discuss it further in more detail.</em></strong><br />
<br />
<br />
<strong><em><span style="font-size: x-small;">Disclaimer:</span></em></strong><br />
<span style="font-size: xx-small;">All data and information provided on this site is for informational purposes only. This site makes no representations as to accuracy, completeness, currentness, suitability, or validity of any information on this site and will not be liable for any errors, omissions, or delays in this information or any losses, injuries, or damages arising from its display or use. All information is provided on an as-is basis.This is a personal weblog. The opinions expressed here represent my own and not those of my employer or any other organization.</span>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com0tag:blogger.com,1999:blog-2368166884378082804.post-80378683043837191482010-05-04T01:39:00.000-07:002010-05-17T22:10:07.324-07:00Benchmarking – One of the Best Practices for Measurement of your Application Stack PerformanceWith growing number of “change requests” coming to your application, it is increasingly difficult task to ensure that your application is not introducing performance issues. One of the best practices to ensure this is to “baseline” your performance statistics and “make it a yardstick” to measure the performance of application post major release (having many CRs). Across the industry, it is generally called as “<i><b>Benchmarking</b></i>".<br />
<br />
<i>Benchmarking is one of the best strategies to measure your hardware performance (to know its capacity) or any OS/application server performance or any framework performance, generally for “capacity modeling” or “evaluate & choose the best hardware/software/framework” on the basis of benchmarking numbers.</i><br />
<br />
<b><i>For Java, Benchmarking JVM, GC (Garbage Collectors) or any JDBC library can be used to evaluate & choose the best among the pack.</i></b><br />
<br />
Now, coming back to Benchmarking your own custom application, it will give you following <b>benefits</b>:<br />
<br />
• Capacity Modeling – Knowing the capacity of your application stack<br />
<br />
• Baseline (Yardstick) – Establishing a yardstick against which all future releases will be based upon; subsequent releases should improve these numbers, not decrease.<br />
<br />
• Measurability<br />
<br />
• Choosing the best alternative on the basis of stats<br />
<br />
<b><u>Suggested Benchmarking Parameters for your application:</u></b><br />
<br />
• Response Time in Seconds <br />
<br />
• Throughput – Requests Processed Per Second<br />
<br />
• Memory Usage, CPU Usage, Database Connections Usage, Disk I/O Usage<br />
<br />
<b><i>One of the most important steps in establishing Benchmarking numbers is “cycles of performance runs” (at least 3 cycles, more is better as it gives more reliable data).</i></b><br />
<br />
<br />
<b><i>References:</i></b><br />
<br />
1. Microsoft Article - <a href="http://msdn.microsoft.com/en-us/library/ms954597.aspx">Benchmarking Web Services using Doculabs</a><br />
<br />
2. IBM Article – <a href="http://www.ibm.com/developerworks/opensource/library/os-perfbenchmk/index.html">Benchmarking Method for Comparing Open Source App Servers</a><br />
<br />
3. Benchmarking AOP Implementations - <a href="http://docs.codehaus.org/display/AW/AOP+Benchmark">http://docs.codehaus.org/display/AW/AOP+Benchmark</a><br />
<br />
4. Benchmarking ESB: <a href="http://esbperformance.org/wiki/ESB_Performance_Test_Framework">http://esbperformance.org/wiki/ESB_Performance_Test_Framework</a>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com0tag:blogger.com,1999:blog-2368166884378082804.post-82913634094839970712010-01-31T21:05:00.000-08:002010-01-31T21:09:16.320-08:00Many Development Methodologies - Which one to choose, Hyrbid might be the ANSWERWell, the time has changed like the speed of sound since the era when <em>Waterfall</em> model was considered to be best methodologies for Software Development. <br />
<br />
But now in new information age, where <em>frequently changing user requirements, challenging timelines, tight budget </em>and <em>competitive bids</em> are driving factors, IT industry offers many methodologies namely <em>Prototyping, Spiral, RAD, Rational RUP, Agile (Scrum, XP, DSDM - Dynamic System Development Method, FDD - Features Driven Development, Lean Software Development</em>) and the list goes on.<br />
<br />
Considering all the available options as <em>Development Methodologies</em> in today's world, it is increasingly difficult to choose a single methodology for all your projects inside a single organization. But having multiple methodologies in a single organization generally creates chaos and obscures roadmap for future projects. <br />
<br />
<strong><em>"A slightly different approach</em></strong> to tackle this challenge is to <strong><em>adapt best practices</em></strong> from short-listed methodologies, which suits best for your organization and <strong><em>formulate a hybrid-development methodology</em></strong> specific to your organization."<br />
<br />
To illustrate, lets imagine a Development Methodology, which has following features:<br />
<ul><li>Sprint approach of Scrum for handling features/requirements in quick turnaround</li>
<li>Daily Scrum (or Standup Meeting) to check progress of the project</li>
<li>Feedback, Continuous Integration approach of XP</li>
<li>Monitoring/Control of Waterfall SDLC (specially of larger projects)</li>
<li>Eliminate Waste of Lean software development</li>
</ul>Though it needs a considerable amount of research and analysis for any organization to formulate such a hybrid development methodologies, it will pay-off in long run and established a clear roadmap for future development.Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com9tag:blogger.com,1999:blog-2368166884378082804.post-58765561533017582502010-01-07T00:26:00.000-08:002010-01-07T01:30:57.676-08:00Compare Persistence Mechanisms in Java using factors: ease of development, performance, scalibility, extensibility & security<div class="Section1"><table border="0" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="width: 546px;"><tbody> </tbody></table><table border="0" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="width: 546px;"><tbody> </tbody></table></div><div class="Section1"><table border="0" cellpadding="0" cellspacing="0" class="MsoNormalTable" style="width: 546px;"><tbody>
<tr style="height: 24pt;"><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(51, 51, 153) none repeat scroll 0% 50%; border: 1pt solid black; height: 24pt; padding: 0in; width: 45.6pt;" valign="top" width="76"><br />
<br />
<br />
<div class="MsoNormal"><br />
</div></td><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(51, 51, 153) none repeat scroll 0% 50%; border: 1pt solid black; height: 24pt; padding: 0in; width: 48.6pt;" valign="top" width="81"><div style="text-align: center;"><br />
</div><div class="MsoNormal" style="text-align: center;"><b><span style="color: white;">Ease of development</span></b><br />
</div></td><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(51, 51, 153) none repeat scroll 0% 50%; border: 1pt solid black; height: 24pt; padding: 0in; width: 74.4pt;" valign="top" width="124"><span style="color: white;"></span><br />
<div style="text-align: center;"><span style="color: white;"><br />
</span><br />
</div><br />
<div class="MsoNormal" style="text-align: center;"><b><span style="color: white;">Performance</span></b><br />
</div></td><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(51, 51, 153) none repeat scroll 0% 50%; border: 1pt solid black; height: 24pt; padding: 0in; width: 55.8pt;" valign="top" width="93"><span style="color: white;"></span><br />
<div style="text-align: center;"><span style="color: white;"><br />
</span><br />
</div><br />
<div class="MsoNormal" style="text-align: center;"><b><span style="color: white;">Scalability</span></b><br />
</div></td><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(51, 51, 153) none repeat scroll 0% 50%; border: 1pt solid black; height: 24pt; padding: 0in; width: 58.2pt;" valign="top" width="97"><span style="color: white;"></span><br />
<div style="text-align: center;"><span style="color: white;"><br />
</span><br />
</div><br />
<div class="MsoNormal" style="text-align: center;"><b><span style="color: white;">Extensibility</span></b><br />
</div></td><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: rgb(51, 51, 153) none repeat scroll 0% 50%; border: 1pt solid black; height: 24pt; padding: 0in; width: 48pt;" valign="top" width="80"><span style="color: white;"></span><br />
<div style="text-align: center;"><span style="color: white;"><br />
</span><br />
</div><br />
<div class="MsoNormal" style="text-align: center;"><b><span style="color: white;">Security</span></b><br />
</div></td></tr>
<tr style="height: 42.6pt;"><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: maroon none repeat scroll 0% 50%; border: 1pt solid black; height: 42.6pt; padding: 0in; width: 45.6pt;" valign="top" width="76"><br />
<div class="MsoNormal"><span style="color: white;">Entity Beans - CMP</span><br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 48.6pt;" valign="top" width="81"><br />
<div class="MsoNormal"><b>High – </b>Bean developer concentrates on business<br />
logic; persistence logic provided by EJB vendor<br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 74.4pt;" valign="top" width="124"><br />
<div class="MsoNormal"><b>High - </b>Application programmers delegate the details<br />
of persistence to the container, which can optimize data access patterns for<br />
optimal performance.<br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 55.8pt;" valign="top" width="93"><br />
<div class="MsoNormal"><b>High – </b>Container provides scalability<br />
(configuration based)<br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 58.2pt;" valign="top" width="97"><br />
<div class="MsoNormal"><b>High </b><br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 48pt;" valign="top" width="80"><br />
<div class="MsoNormal"><b>High – </b>Container provided<br />
</div></td></tr>
<tr style="height: 37.2pt;"><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: maroon none repeat scroll 0% 50%; border: 1pt solid black; height: 37.2pt; padding: 0in; width: 45.6pt;" valign="top" width="76"><br />
<div class="MsoNormal"><span style="color: white;">Entity Beans - BMP</span><br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 48.6pt;" valign="top" width="81"><br />
<div class="MsoNormal"><b>Low </b>– Bean developer is responsible for providing<br />
persistence logic.<br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 74.4pt;" valign="top" width="124"><br />
<div class="MsoNormal"><b>Uncertain – </b>Depends upon the proficiency of bean<br />
developer<br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 55.8pt;" valign="top" width="93"><br />
<div class="MsoNormal"><b>High – </b>Container provides scalability<br />
(configuration based)<br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 58.2pt;" valign="top" width="97"><br />
<div class="MsoNormal"><b>Low – </b>Bean developer’s persistence logic needs to<br />
understand by others.<br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 48pt;" valign="top" width="80"><br />
<div class="MsoNormal"><b>High – </b>Container provided<br />
</div></td></tr>
<tr style="height: 42.6pt;"><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: maroon none repeat scroll 0% 50%; border: 1pt solid black; height: 42.6pt; padding: 0in; width: 45.6pt;" valign="top" width="76"><br />
<div class="MsoNormal"><span style="color: white;">JDO</span><br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 48.6pt;" valign="top" width="81"><br />
<div class="MsoNormal"><b>High – </b>Bean developer concentrates on business<br />
logic; persistence logic provided by JDO vendor<br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 74.4pt;" valign="top" width="124"><br />
<div class="MsoNormal"><b>High - </b>Application programmers delegate the details<br />
of persistence to the JDO implementation, which can optimize data access<br />
patterns for optimal performance.<br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 55.8pt;" valign="top" width="93"><br />
<div class="MsoNormal"><b>High </b><br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 58.2pt;" valign="top" width="97"><br />
<div class="MsoNormal"><b>High </b><br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 48pt;" valign="top" width="80"><br />
<div class="MsoNormal"><b>High</b><br />
</div></td></tr>
<tr style="height: 42.6pt;"><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: maroon none repeat scroll 0% 50%; border: 1pt solid black; height: 42.6pt; padding: 0in; width: 45.6pt;" valign="top" width="76"><br />
<div class="MsoNormal"><span style="color: white;">JPA</span><br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 48.6pt;" valign="top" width="81"><br />
<div class="MsoNormal"><b>High – </b>Bean developer concentrates on business<br />
logic; persistence logic provided by JPA vendor<br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 74.4pt;" valign="top" width="124"><br />
<div class="MsoNormal"><b>High – </b>Best ideas from ORM (<b>Hibernate,TopLink</b>)<br />
and JDO<br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 55.8pt;" valign="top" width="93"><br />
<div class="MsoNormal"><b>High – </b>Container provides scalability<br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 58.2pt;" valign="top" width="97"><br />
<div class="MsoNormal"><b>High - </b>supports the use of pluggable persistence<br />
providers<br />
</div></td><td style="border: 1pt solid black; height: 42.6pt; padding: 0in; width: 48pt;" valign="top" width="80"><br />
<div class="MsoNormal"><b>High – </b>Supports Standardized Security Model (Java)<br />
</div></td></tr>
<tr style="height: 25.8pt;"><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: maroon none repeat scroll 0% 50%; border: 1pt solid black; height: 25.8pt; padding: 0in; width: 45.6pt;" valign="top" width="76"><br />
<div class="MsoNormal"><span style="color: white;">ORM Frameworks</span><br />
</div></td><td style="border: 1pt solid black; height: 25.8pt; padding: 0in; width: 48.6pt;" valign="top" width="81"><br />
<div class="MsoNormal"><b>Medium – </b>Reduces development time<br />
</div></td><td style="border: 1pt solid black; height: 25.8pt; padding: 0in; width: 74.4pt;" valign="top" width="124"><br />
<div class="MsoNormal"><b>Depends </b>- some O/R mapping tools do not perform<br />
well during bulk deletions of data<br />
</div></td><td style="border: 1pt solid black; height: 25.8pt; padding: 0in; width: 55.8pt;" valign="top" width="93"><br />
<div class="MsoNormal"><b>High-to-Medium – </b>Depends on ORM vendor<br />
</div></td><td style="border: 1pt solid black; height: 25.8pt; padding: 0in; width: 58.2pt;" valign="top" width="97"><br />
<div class="MsoNormal"><b>Low – </b>Non-standardized<br />
</div></td><td style="border: 1pt solid black; height: 25.8pt; padding: 0in; width: 48pt;" valign="top" width="80"><br />
<div class="MsoNormal"><b>Medium-to-High – </b>Depends on Vendor<br />
</div></td></tr>
<tr style="height: 37.2pt;"><td style="-moz-background-clip: -moz-initial; -moz-background-inline-policy: -moz-initial; -moz-background-origin: -moz-initial; background: maroon none repeat scroll 0% 50%; border: 1pt solid black; height: 37.2pt; padding: 0in; width: 45.6pt;" valign="top" width="76"><br />
<div class="MsoNormal"><span style="color: white;">DAO with direct JDBC</span><br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 48.6pt;" valign="top" width="81"><br />
<div class="MsoNormal"><b>Low </b>– Bean developer responsible for persistence<br />
logic.<br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 74.4pt;" valign="top" width="124"><br />
<div class="MsoNormal"><b>High-to-Medium - </b><br />
</div><div class="MsoNormal">But Depends upon the proficiency of bean developer<br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 55.8pt;" valign="top" width="93"><br />
<div class="MsoNormal"><b>Medium-to-High – </b>Depends on expertise of Developers<br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 58.2pt;" valign="top" width="97"><br />
<div class="MsoNormal"><b>Medium-to-High – </b>Depends on expertise of Developers<br />
</div></td><td style="border: 1pt solid black; height: 37.2pt; padding: 0in; width: 48pt;" valign="top" width="80"><br />
<div class="MsoNormal"><b>Medium-to-Low – </b>Needs to be handled by bean<br />
developer<br />
</div></td></tr>
</tbody></table></div>Ankur Kumarhttp://www.blogger.com/profile/06728331395154360487noreply@blogger.com5