Valtira Blog
Cloud Applications Presentation
by Morgan Catlin - 16 Nov 2011, 21:10:33
I've submitted my MN IT Symposium presentation, "Architecting and Deploying Scalable, Resilient, and Cost-Effective Cloud Applications", which discusses how to bring about an affective Cloud-based application.
It discusses my experiences using PaaS and rolling my own architecture. I go over what worked and some common misconceptions about using PaaS and RYO.
I think the most interesting part is showing an ideal distributed architecture for the common Java Pet Store application. I talk about how to use AWS' services to achieve high reliability and scalability.
Can't wait to meet all you great attendees!
Comments? Suggestions? Feedback?
CMS and Salesforce.com
by Morgan Catlin - 28 Oct 2010, 08:30:41
One of our clients uses Salesforce.com extensively for their sales and marketing efforts. They also have a large website filled with great content, videos, demos, case studies, white papers and other such brochure-ware marketing content. But they have a problem, who is actually reading and consuming this content? Are the readers their clients or leads they know about or potential new "hot" leads? Shouldn't the website and Salesforce.com cooperate to help answer these questions?
Salesforce.com offers developers access to their SOAP-based APIs. These APIs allow access to almost all the records within an account as well as the ability to work with custom objects. I took advantage of these APIs to enable the interation between Valtira and Salesforce.com.
After Salesforce.com and Valtira have been configured, Valtira will import the leads/contacts from Salesforce.com and attempt to match users on the site against these records. Valtira uses two ways to match users against their lead/contact records - incoming links from marketing efforts (like email or personalized landing pages) and if they fill out a form on the site. A marketing person can customize the links within email they send with the lead/contact ID from Salesforce.com. Valtira will use the ID from the link to match against the database.
Once matches have been made, Valtira begins to upload the session data: pages viewed, documents downloaded, the geo-location of the user, session length and whether the user submitted a form to create their record. A Salesforce.com user will see the list of sessions on the lead/contacts pages and can dig deeper into the individual sessions. Having this data here closes the sales/marketing loop, allowing sales people to make more informed decisions when talking to their leads. This benefits marketing too, as they can see what potential leads are most interested in and just makes the marketing team look better!
You don't need to use Salesforce.com to take advantage of Valtira's ability to track individual users. You can upload your own list of contacts or just let the forms on the site begin to create the records. Valtira even has a handy dashboard widget that will show you any leads hitting the website in real time. Any incoming links should have the contact's email embedded in it to match against the database.
One thing to note: our client uses one of the many available marketing email integrations with Salesforce.com. They built the HTML templates within the tool and then used mail merge to drop the lead/contact ID into the email as it is sent. I've seen this working with ExactTarget and iContact.
About the author: Morgan is an application developer, focusing on rich Web-based applications. These applications solve a myriad of business problems, from managing spots on cable tv to tracking users 'click-through' rates on marketing web sites. These applications rely on database and operating system interactions, primarily Java, Ubuntu Linux and MySQL.
Comments? Suggestions? Feedback?
Extending Salesforce.com's Inbound Email
by Morgan Catlin - 09 Oct 2012, 23:49:35
Salesforce.com's default inbound email processing is limited to cases and leads without any sort of further customization other than workflow rules. We extended Salesforce.com's default capabilities far beyond with a few Apex classes. As you can see, this post is geared toward developers, but business managers should know that implementing a relatively simple extended workflow should take less than a day.
The customer deploys their software on a few devices other than just web browsers and the customer needs one place to manage all their users' problems. These inbound emails came in many formats that needed to be parsed into Cases. Not only did Salesforce.com meet that need, but we extended is to include a portal where users can find and rank solutions, allowing the customer's support team to scale far beyond just the people that work there.
This example extends how Cases are imported, but could be extended to any standard or custom object. First, build an Apex class that will process inbound email:
global Messaging.InboundEmailResult handleInboundEmail(Messaging.InboundEmail email, Messaging.InboundEnvelope envelope) {
Messaging.InboundEmailResult result = processEmail(envelope.fromAddress, email.Subject, email.plainTextBody, false);
return result;
}
global static Messaging.InboundEmailResult processEmail(String fromAddress, String subject, String body, boolean isAttachment) {
Messaging.InboundEmailResult result = new Messaging.InboundEmailResult();
// detect the type of email from the body content, subject line, or whatever will help you figure that out
// now, create your Case with the fields parsed from the email
Case c = new Case(Subject='Test');
insert c;
// hint, if you won't emails to get back to the end user, don't set result.message!
if (Test.isRunningTest()) {
result.message = c.id;
}
return result;
}
}
Next, configure your brand new Apex class as an Email Service by:
1. Setup --> Develop --> Email Services
2. Click New Email Service
3. Provide Name, Apex Class, tweak the settings depending on the inbound email (sent by anybody or by a specific address?)
4. Decide how you want Salesforce to manage your over limit situations
5. Save!
You'll then see a really long and crazy email address which is what you'll give to your senders.
If you want to reject inbound email, you can use a Trigger to invoke addError() to SObjects that match your filters. Helps keep your database nice and clean!
Comments? Suggestions? Feedback?
Cloud Outlook Early 2013
by Morgan Catlin - 07 Jan, 14:57:32
I attended AWS's first Re:invent conference in late November and am still struggling to incorporate everything I learned. The biggest take away is this: everyone is now serious about the Cloud, not just start-ups anymore. I'm seeing this with Valtira's business: I'm doing three projects at the moment that simply analyzes a customer's IT environment then creates a plan to bring what makes sense to the Cloud. Compare that with the past four years of Cloud projects: strictly start-ups (either new companies or new efforts within a company).
AWS alone has saved several companies 70% on an IT project/infrastructure. Mind-blowing! It is just IaaS and it saves that much! Another fun fact about AWS: they add enough new resources each day to match what their 4.3 billion dollar company needed in 2003. EACH DAY. Think about that.
AND, AWS isn't just about servers or easy-to-use storage! It's not just about what infrastructure is there for a developer to play with! It's now about what SERVICES it offers! Redshift, data-pipeline, email, and on and on. All components for a Cloud-enabled application and its health: monitoring, trend analysis, data mining, notification, and communication ALL IN ONE PLACE. No need to setup, maintain, and monitor a service your app depends on! No need to incorporate clunky APIs for that service into your app anymore...
What about Force.com and other PaaS like Google's AppEngine, Heroku and CloudFoundry? I develop on Force.com nearly every day. I haven't had a reason yet to use the others but as a developer, it's hard to ignore how much further you can be with a mature PaaS environment.
I think that PaaS will remain in the start-up toolkit for a long time but never will be a target of a Cloud conversion project. I've been involved in conversion projects in the past - migrating 100s of applications to a new development environment - and these simply go no where. It's too easy to let things that aren't broken hang around and focus on taking advantage of new tech on new projects where there's a clean slate.
A word on Salesforce.com: it's momentum lately is really good and they keep on adding killer functionality. My clients find it very handy as an easy place to manage data, build business logic that manages that data, then integrate both into other applications. This, clearly, will continue to be the trend here.
However, I don't see Salesforce.com's scale ever approaching AWS's. Salesforce.com is simply too limited by it's own scope and mission, a good thing. I do think Salesforce.com needs to take a serious look at the AWS platform as a place to achieve cost-effective scale. The other draw-back, which Mark notes in his book, is that Salesforce.com was built with 1999 technology in mind. A three or four tier architecture (load balancer, web server, app server, database) is just not going to cut it anymore. It's also crazy expensive to run all of that as well as meter all the customers using a traditional app framework!
The Cloud is still an extremely immature environment but it's hard to ignore the tremendous successes that we hear about almost daily. The question always is: what technology is relevant today, what will be relevant next year and what's relevant in five years?! Your choice must be deliberate and carefully thought-out as applications lifetimes are far beyond what you'd think...
If you aren't thinking Cloud...
About the author: Morgan is a Cloudy Application Architect, specializing in Amazon AWS and Force.com delivery. Applications range from commerce to video streaming to business management to online communities.
http://www.linkedin.com/in/mcatlin
Categories
- 3d (1)
- ad revenue (1)
- apps (6)
- aws (5)
- branding (1)
- cloud (10)
- cloud computing (1)
- commoditized workloads (1)
- css3 (1)
- development (4)
- ec2 (9)
- handlersocket (1)
- html5 (1)
- innocent bystander syndrome (1)
- integration solutions (1)
- ios (1)
- java (5)
- landing pages (1)
- lead scoring (1)
- marketing (2)
- mn it symposium (1)
- mysql (3)
- nosql (1)
- personalization (1)
- roku (3)
- s3 (2)
- saas (4)
- salesforce (6)
- sociable company (1)
- social (1)
- social business transformation (1)
- social media (1)
- tomcat (2)
- tools (1)
- video (3)
- wowza (3)
Archives By Month
- April 2013 (1)
- March 2013 (1)
- February 2013 (1)
- January 2013 (2)
- October 2012 (1)
- May 2012 (2)
- April 2012 (1)
- January 2012 (1)
- November 2011 (4)
- August 2011 (1)
- July 2011 (1)
- March 2011 (2)
- February 2011 (2)
- January 2011 (1)
- December 2010 (1)
- November 2010 (1)
- October 2010 (2)
- September 2010 (1)
About Us
Valtira's team includes many bright people with useful opinions on the latest web technologies like HTML5 and cloud computing.
