Salesforce and DevOps Part 2b - Ops Tools

Break over, let's get back to it.

This post is a continuation of the second part of my Salesforce and DevOps series. In that post, I wrote a list of the tools that apply to Salesforce in the categories that I view to be the "Dev" part of DevOps processes.

In this one, I'll try my best to do the same, but for the Ops part. Again, as usual, please let me know if there are any other tools or categories you guys think I missed, happy to update.

Before I begin, I have to say that a big part of what software Ops usually does doesn't apply to Salesforce. Being a managed cloud service, we can't really monitor, configure or act at all with regards to their infrastructure, overarching security of the service and their practices (by "they" I mean Salesforce as the provider).

What we can do is control and operate how we run our own implementations on top of Salesforce's core platform. Let's start running through the categories.

Full disclosure: being more on the technical side myself, I'll frame these tools in the view of a regular user, not necessarily an expert in setting them up or maintaining them.

Another note: I'm going to assume that you are familiar with Agile and Waterfall methodologies and their terminology. A post about methodology and best practices for Salesforce delivery might come in the future.




Project management

There are several options for project management, but I'll narrow it down to the ones I've used in the following subcategories: backlog / issue tracking / sprint management and project and task planning.

Backlog / Issue Tracking / Sprint management

  • Atlassian's Jira: this is the most known and the one I've used all the time. Great for backlog management, day to day issue / story tracking. It has some good reporting capabilities and it's quite complete for what I've used it in the past (and currently). Jira also has a lot of integrations and, being Atlassian, it syncs nicely with the whole suite. Jira can be used as full SaaS, or install it on-prem, your cloud providers or any infrastructure you decide to use. It has a "cheap" tier for small teams, but gets expensive fast, as size grows
  • Salesforce Agile accelerator: this is a package from Salesforce Labs in the appexchange. I'm not sure how supported this thing still is, but I haven't used it much to say one way or the other and it seems to have a lightning version, so it must have been updated fairly recently. It's completely free to install and use
  • Trello: acquired by Atlassian not too long ago, this is a really simple tool for Kanban-like boards and management. It's good for what it does, has good APIs, integrates with collaboration tools. It has a free tier, which likely works for most smaller teams

Project and task planning

  • Smartsheet: cloud tool for project and work management (among other collaboration and docs features), includes a lot of nice features and it has some cool integrations with tools like Jira. It has a free trial, but no free tier
  • MS Office Project, Planner and similar on 365: Microsoft has been in this business for a long time, and I won't go too deeply on it. Love it or hate it, they have some good capabilities, certain things work on 365, others don't. And the price is what it is, as all of you know
  • TaskFeed: founded by Andy Mahood, TaskFeed is a great appexchange package to manage and plan tasks for project planning and management. Especially implemented to template and organise customer onboarding, implementation activities and project management tasks, and not to be confused with development, as it not necessarily designed for that. Check it out here

Verdict:


On backlog / issue and sprint management. I'd go with Jira, if your budget works. Not much more to say there, hands down winner for me.

On project and task planning. I'm not that familiar with these tools on the level of vendor choosing, but I'll say this: 
  • Check TaskFeed out, if you want to leverage having it's task management cool features on the Salesforce platform. 
  • If you need it outside of Salesforce, then it's maybe a decision on what you want to pay for. You might already have office, so could go with MS products. If not, check Smartsheet out, as the cloud offering and the integrations will probably make it worth your while.

Monitoring / Analytics / Security




Now, this is one of those tricky ones, when it comes to Salesforce, so I'll try to summarise it in some bullet points, instead of just listing a few tools. 

I'm including security in this section, as there's not much more you can do on things like DevSecOps, which would probably take another post entirely, just not related to Salesforce. They handle all the product's security themselves.

This is not to say that there are no security related features in Salesforce (OWD, profiles, permission sets and what not), and you definitely need to build your custom features with security in mind (watch out for XSS, cross domain vulnerabilities, SOQL injection and so on). Obviously!
  • You can always go to trust.salesforce.com to check the status of the instances and the data centres, with a lot of security and disaster recovery information and so on. But that's not really automating anything, is it?
  • There's an API for Salesforce's Trust (swagger link here), where you can poll different metrics and statuses, if you feel like it's useful to do so. There's a limit on the actions you can take with that info, of course. For example, if you really feel strongly about it, you can use an integration tool to poll the API (MuleSoft maybe, following the Salesforce theme?), then transform and send this info to a monitoring / analytics tool of your choice. I've seen this done with Geneos, but I'm guessing you could get creative and use something from the periodic table, like DataDog, some ElasticSearch with it, and so on. I'd love to hear about any such creative solutions!
  • If you (or your client) have access to Salesforce Shield, then you can use its event monitoring API to check a few metrics (login, logout, clicks, loads, API calls and some others). This has some considerations:
    • It's not going to be real time as the logs are created every 24 hours
    • It's only an API, so you need a tool to consume it and report on it
    • If you have it, you could use Salesforce Einstein Analytics (formerly known as Wave) to report on the event logs and create nicer views, if you want to keep it inside the platform. There's a Salesforce app that comes with the product and you can use, but I can't say how useful it is and how easy it is to configure, so it adds real value
  • There's a Splunk plugin for Salesforce, which is really interesting, if you use the tool. Check it out here, as it may fit your needs. This plugin will be based on what Salesforce offers, though, so it's just a nice way to display the info mentioned above in Splunk and they do add some extra insights on top of it
  • Apex execution monitoring is a tricky one. There are good debugging capabilities inside of Salesforce, but not a lot of ways to automate their monitoring from outside and act proactively on it. You can do several things for this (all custom work, unfortunately, so I'll mention a couple of ideas and things I've seen):
    • You can raise Salesforce Platform Events in different points of your codebase (exceptions, warnings or anything of interest) and stream them with an integration tool (again, maybe MuleSoft?), to send it to the monitoring / analytics tool of your choice (Geneos, DataDog, ElasticSearch... as above)
    • Historically, before platform events, teams have usually created a log object (or many, depending on the situation), to record the warnings, exceptions and interesting events that are found in different places on the codebase. You can still do that, and stream the records in a similar way as the previous point, with the Streaming API
  • Important to note is that, when working with Salesforce, monitoring of the implementation process takes a whole new level of importance. So really make the best of the reporting and APIs that your dev and collaboration tools have. For example, check Jenkins build logs and statuses, Jira tracking and burn-downs, Github source control activity, testing reports and so on. I'd love to hear about some creative use of these metrics in a centralised and automated way, if any of you have done that sort of thing!
  • As a last item, I thought I'd mention that for ISV partners (Appexchange app vendors), there's a mandatory security review that needs to be passed before you're able to publish your app (https://developer.salesforce.com/page/Security_Review). In there, you'll find a self-assessment tool by Checkmarx that you can plug into your regular flow (ISV or not), if you're really careful and not overdo it! I don't know how much you can or would want to automate that, though.

Verdict:

In short, there are many creative ways to get some level of monitoring out of the Salesforce platform and your codebase, and you can definitely squeeze what's available to make it work for you. There are just not that many rich features available out of the box, though.

Be careful with this, as you'll need to study the actual value of what's available and what you can create against the cost of implementing and maintain it. But that's true for everything, I guess.

Collaboration


Some of you will ask: is that DevOps? I say yes, definitely, almost everything you do in a project is part of DevOps in one way or another!

I'm not going to go into a lot of detail of Skype, Hangouts and the like, as they're useful, but I don't really mean to dig in too much into chat and video conferences, it's more about how you can collaborate with all the tools, both Dev and Ops.

The ones I know and have used are the following:
  • Slack: this one is pretty cool and I'm using it a lot lately, it has a lot of integrations with most of the tools you've seen and a rich API and webhooks for custom built ones. Think about seeing Bitbucket updates, commenting on them, link to them, act on pull requests; also check Jira statuses, check build progress, receive notifications, etc. You can do all of this inside of Slack, and more. It's fully cloud based, and it has apps for all the usual devices. It has a free tier as well, if you don't mind that they don't keep the whole history of conversations and if you're under the specified number of integrations. The way you can share code snippets and create conversations and threads is pretty cool. It also has audio and video calling.
  • MS Teams: Microsoft's answer to Slack. They promise to do most of the same things that Slack does, but I can't say that I've used it in anger to know for sure. Browsing lightly through the integration list, it seems to do some of them as plugins, but I'm not 100% sure. The way it uses MS docs is actually pretty cool, as you can add tabs with spreadsheets, presentations and the like. It's included with most of 365 offerings (I think), but it recently added a free tier that seems to do most of what small teams will need. Again, haven't delved too deeply on this one.
  • Bitbucket, Github, Gitlab: it's pretty important to use your source control server features, especially as a means of peer-reviewing changes, and when collaborating on pull requests.
  • Jira: same as above, collaboration on story and issue management is key.
  • Atlassian's Confluence: wiki-like tool, for sharing documentation and release instructions, among other things
  • Salesforce Chatter: not really integrating nicely with most of the tools, you could potentially use chatter to collaborate, especially when using the agile accelerator. If you feel adventurous, you can consume the Chatter REST API from external sources and tools (if that's something you need...)
  • Salesforce's Quip: this is a pretty cool tool, but I have to say I haven't used it too much, either. It's great for sharing and collaborating on files, it has a few cool integrations, you can build your own apps and display them there and so on
  • Atlassian's Hipchat / Stride: they're killing these, as Slack paid Atlassian to absorb the functionality, so...

Verdict:


From what I've used and for flexibility and completeness, I have to give this one to Slack.

RANT OVER

OK, there you go, I think I covered most of the tools that you can use for DevOps when it comes to Salesforce, between parts 2a and 2b. Please comment if I missed any or if you have more ideas, I'd love to hear them. 



Comments

Popular posts from this blog

Salesforce and DevOps Part 1 - My views

Architecture principles for Salesforce implementations

Salesforce and DevOps Part 3 - Development Lifecycle