Welcome!

@DevOpsSummit Authors: Yeshim Deniz, Zakia Bouachraoui, Liz McMillan, Pat Romanski, Elizabeth White

Related Topics: @DevOpsSummit, Java IoT, @CloudExpo

@DevOpsSummit: Blog Feed Post

SBT, Scrooge, Intellij and You By @VictorOps | @DevOpsSummit [#DevOps]

We are going through the process of overhauling the serialization framework that we use for inter & intra process communication

How to Set Up a Playdate Between Scala, Thrift, Scrooge, SBT and Intellij
By Nick Isaacs

Here at VictorOps, we are going through the process of overhauling the serialization framework that we use for inter and intra process communication. We evaluated several great options including Kryo (and its Scala companion Chill), Protobuffers, and Thrift.

In the process, we put together a little test project to help us decide which of these choices was right for us. Testing Thrift posed some challenges as the tooling, while quite mature, wasn’t quite as plug-n-play with our local development environment as we would have liked. The following instructions assume a basic knowledge of the Scala/SBT framework, Thrift, and (optionally) Intellij.

What is needed:

Steps:

1. Create a new project with a build.sbt file and add the following lines:

libraryDependencies ++= Seq( "org.apache.thrift" % "libthrift" % "0.8.0", "com.twitter" % "scrooge-core_2.11" % "3.17.0" )

com.twitter.scrooge.ScroogeSBT.newSettings unmanagedSourceDirectories in Compile += baseDirectory.value / "target" / "scala-2.11" / "src_managed"

This will add the Thrift and Scrooge dependencies to your sbt project.

2. If you do not already have a project/plugins.sbt file, create one and add the following line:

addSbtPlugin("com.twitter" % "scrooge-sbt-plugin" % "3.14.1")

3. Create a new directory to hold your Thrift files (by default, Scrooge will check in src/main/thrift, which worked fine for us)

4. Define some Thrift files, if you want, here is a simple example:

namespace java com.example.thrift.java
#@namespace scala com.example.thrift.scala

typedef list<string> friendList

struct NastyCaseClass {
1: string firstName,
2: string lastName,
3: bool ownsPetOtter,
6: friendList listOfFriends,
}

5. By default, Intellij marks everything in the target/ directory as ‘excluded’ for builds. We are gonna have to do something about that.

  • Open up the “project structure” window & click “modules in the right hand menu

Screenshot 2015-03-03 15.16.27

  • Click on the name of your project, you should see the directory structure appear

Screenshot 2015-03-03 15.17.05

  • Click “target” and uncheck “Excluded”

Screenshot 2015-03-03 15.17.13

  • Expand “target” and mark all subfolders as “Excluded” except for scala-version.no

screenshot_2015-03-05_13.05.49

  • Expand “scala-version.no” and mark all folders as “Excluded” except for “src_managed” which you should mark as “Source”

Screenshot 2015-03-03 15.18.30

6. Run an SBT clean, scrooge-gen, and compile. All generated files should now be visible to both SBT and Intellij (hooray for syntax highlighting)

Hope this helps anyone in a similar situation. Another thing to note was that updating *.thrift files would cause SBT to become a bit “unhappy”. To rectify this, simply run a scrooge-gen and a clean after making edits.

Happy serializing  :)

The post SBT, Scrooge, Intellij and You appeared first on VictorOps.

Read the original blog entry...

More Stories By VictorOps Blog

VictorOps is making on-call suck less with the only collaborative alert management platform on the market.

With easy on-call scheduling management, a real-time incident timeline that gives you contextual relevance around your alerts and powerful reporting features that make post-mortems more effective, VictorOps helps your IT/DevOps team solve problems faster.

@DevOpsSummit Stories
The best way to leverage your Cloud Expo presence as a sponsor and exhibitor is to plan your news announcements around our events. The press covering Cloud Expo and @ThingsExpo will have access to these releases and will amplify your news announcements. More than two dozen Cloud companies either set deals at our shows or have announced their mergers and acquisitions at Cloud Expo. Product announcements during our show provide your company with the most reach through our targeted audiences.
Enterprises are universally struggling to understand where the new tools and methodologies of DevOps fit into their organizations, and are universally making the same mistakes. These mistakes are not unavoidable, and in fact, avoiding them gifts an organization with sustained competitive advantage, just like it did for Japanese Manufacturing Post WWII.
When building large, cloud-based applications that operate at a high scale, it's important to maintain a high availability and resilience to failures. In order to do that, you must be tolerant of failures, even in light of failures in other areas of your application. "Fly two mistakes high" is an old adage in the radio control airplane hobby. It means, fly high enough so that if you make a mistake, you can continue flying with room to still make mistakes. In his session at 18th Cloud Expo, Lee Atchison, Principal Cloud Architect and Advocate at New Relic, discussed how this same philosophy can be applied to highly scaled applications, and can dramatically increase your resilience to failure.
DevOpsSummit New York 2018, colocated with CloudEXPO | DXWorldEXPO New York 2018 will be held November 11-13, 2018, in New York City. Digital Transformation (DX) is a major focus with the introduction of DXWorldEXPO within the program. Successful transformation requires a laser focus on being data-driven and on using all the tools available that enable transformation if they plan to survive over the long term.
With more than 30 Kubernetes solutions in the marketplace, it's tempting to think Kubernetes and the vendor ecosystem has solved the problem of operationalizing containers at scale or of automatically managing the elasticity of the underlying infrastructure that these solutions need to be truly scalable. Far from it. There are at least six major pain points that companies experience when they try to deploy and run Kubernetes in their complex environments. In this presentation, the speaker will detail these pain points and explain how cloud can address them.