SmartZip

Decision at SmartZip about Amazon DynamoDB,Ruby,Node.js,AWS Lambda,New Relic,Amazon Elasticsearch Service,Elasticsearch,Superset,Amazon Quicksight,Amazon Redshift,Zapier,Segment,Amazon CloudFront,Memcached,Amazon ElastiCache,Amazon RDS for Aurora,MySQL,Amazon RDS,Amazon S3,Docker,Capistrano,AWS Elastic Beanstalk,Rails API,Rails,Algolia

Avatar of juliendefrance
Principal Software Engineer at Stessa ·

Back in 2014,I was given an opportunity to re-architect SmartZip Analytics platform,and flagship product: SmartTargeting.This is a SaaS software helping real estate professionals keeping up with their prospects and leads in a given neighborhood/territory,finding out (thanks to predictive analytics) who's the most likely to list/sell their home,and running cross-channel marketing automation against them: direct mail,online ads,email...The company also does provide Data APIs to Enterprise customers.

I had inherited years and years of technical debt and I knew things had to change radically.The first enabler to this was to make use of the cloud and go with AWS,so we would stop re-inventing the wheel,and build around managed/scalable services.

SaaS产品,we kept on working withRailsas this was what my team had the most knowledge in.We've however broken up the monolith and decoupled the front-end application from the backend thanks to the use ofRails APIso we'd get independently scalable micro-services from now on.

Our various applications could now be deployed usingAWS Elastic Beanstalkso we wouldn't waste any more efforts writing time-consumingCapistranodeployment scripts for instance.Combined withDockerso our application would run within its own container,independently from the underlying host configuration.

Storage-wise,we went withAmazon S3and ditched any pre-existing local or network storage people used to deal with in our legacy systems.On the database side:Amazon RDS/MySQLinitially.Ultimately migrated toAmazon RDS for Aurora/MySQLwhen it got released.Once again,here you need a managed service your cloud provider handles for you.

Future improvements / technology decisions included:

Caching:Amazon ElastiCache/MemcachedCDN:Amazon CloudFrontSystems Integration:Segment/ZapierData-warehousing:亚马逊红移BI:Amazon Quicksight/SupersetSearch:Elasticsearch/Amazon Elasticsearch Service/AlgoliaMonitoring:New Relic

As our usage grows,patterns changed,and/or our business needs evolved,my role as Engineering Manager then Director of Engineering was also to ensure my team kept on learning and innovating,while delivering on business value.

One of these innovations was to get ourselves into Serverless : AdoptingAWS Lambdawas a big step forward.At the time,only available forNode.js(NotRuby) but a great way to handle cost efficiency,unpredictable traffic,sudden bursts of traffic...Ultimately you want the whole chain of services involved in a call to be serverless,and that's when we've started leveragingAmazon DynamoDBon these projects so they'd be fully scalable.

16 up亚博平台怎么样votes · 16.5K views

Decision at SmartZip about 本机反应,Android Studio,Objective-C,Xcode,MobileDev

Avatar of juliendefrance
Principal Software Engineer at Stessa ·

As a Engineering Manager & Director at SmartZip,I had a mix of front-end,back-end,#mobileengineers reporting to me.

Sprints after sprints,I noticed some inefficiencies on theMobileDevside.People working multiple sprints in a row on theirXcode/Objective-Ccodebase while some others were working onAndroid Studio.After which,QA & Product ensured both applications were in sync,on a UI/UX standpoint,creating addional work,which also happened to be extremely costly.

Our resources being so limited,my role was to stop this bleeding and keep my team productive and their time,valuable.

After some analysis,discussions,proof of concepts...etc.We decided to move to a single codebase usingReact Nativeso our velocity would increase.

After some initial investment,our initial assumptions were confirmed and we indeed started to ship features a lot faster than ever before.Also,our engineers found a way to perform this upgrade incrementally,so the initial platform-specific codebase wouldn't have to entirely be rewritten at once but only gradually and at will.

Feedback aroundReact Nativewas very positive.And I doubt - for the kind of application we had - no one would want to go back to two or more code bases.Our application was still as Native as it gets.And no feature or device capability was compromised.

8 up亚博平台怎么样votes · 8 comments · 7.9K views

Decision at SmartZip about Sass,Less,Bootstrap,Stylesheets,Sass,GridFramework

Avatar of juliendefrance
Principal Software Engineer at Stessa ·
SassSass LessLess BootstrapBootstrap
#Stylesheets
#Sass
#GridFramework

哪一个#GridFrameworkto use?My team and I closed onBootstrap!

On a related note and as far asstylesheetsgo,we had to chose between #CSS,#SCSS,#Sass,LessFinally opted forSass

As syntactically awesome as the name announces it.

6 up亚博平台怎么样votes · 4 comments · 5.3K views

Decision at SmartZip about Git,Gemfury,Rails,Ruby,Gemfury,Rubygems

Avatar of juliendefrance
Principal Software Engineer at Stessa ·
GitGit GemfuryGemfury RailsRails RubyRuby
#Gemfury
#Rubygems

Working withRubyonRailsalso means working with#RubyGemsMost of the time,the community has some gems you can use and list down your #Gemfile.But sometimes,you also need to come up with your own proprietary ones to encapsulate and re-use some of your business logic.

It is critical that such repositories and their source code remain private,secure.Even though your code shouldn't contain any credentials,this still applies to your gems' distribution channels.Unless for parts you've willingly open sourced,you don't want your intellectual property stolen.

Rubygems.org therefore,not being an option for this use case,I faced two alternatives: accepting the overhead of maintaining my own gem server,or finding a service that does it for me.

Obviously,the latter was the way to go:

I choseGemfuryfor its convenience,pricing model,and reliability.

Gemfuryalso allowed me/my team to publish gems via different methods: file upload,SSH,HTTPS,or as simple as aGitpush.

6 up亚博平台怎么样votes · 3 comments · 2.9K views

Decision at SmartZip about Ruby,Swagger UI

Avatar of juliendefrance
Principal Software Engineer at Stessa ·

Use case: Keeping all API endpoints documented.

Swagger UIis slick.Not only details the specifications of all input/output parameters are there,but the interface also is interactive and allows sample requests to be sent to the actual endpoints.

With the help ofRubygems such ashttps://github.com/richhollis/swagger-docs,the JSON files can automatically be generated for you for every controller you want to appear on the documentations page.

5 up亚博平台怎么样votes · 2.4K views

Decision at SmartZip about SendGrid,Authy,Twilio Functions,Twilio,Nexmo,Twilio,SDK,SMS,VoiceAndSms

Avatar of juliendefrance
Principal Software Engineer at Stessa ·
SendGridSendGrid AuthyAuthy Twilio FunctionsTwilio Functions TwilioTwilio NexmoNexmo
#Twilio
#SDK
#SMS
#VoiceAndSms

NexmovsTwilio?

Back in the early days at SmartZip Analytics,that evaluation had - for whatever reason - been made by Product Management.Some developers might have been consulted,but we hadn't made the final call and some key engineering aspects of it were omitted.

When revamping the platform,I made sure to flip the decision process how it should be.Business provided an input but Engineering lead the way and has the final say on all implementation matters.My engineers and I decided on re-evaluating the criteria and vendor selection.Not only did we needSMSsupport,but were we not thinking about#VoiceAndSmssupport as the use cases evolved.

Also,on an engineering standpoint,SDKmattered.Nexmo didn't have any.Twilio did.No-one would ever want to re-build from scratch integration layers vendors should naturally come up with and provide their customers with.

Twiliowon on all fronts.Including costs and implementation timelines.No-one even noticed the vendor switch.

Many years later,Twiliodemonstrated its position as a leader by holding conferences in the Bay Area,announcing features likeTwilio Functions.Even acquiredAuthywhich we also used for 2FA.Twilio's growth has been amazing.Its recent acquisition ofSendGridcontinues to show it.

3 up亚博平台怎么样votes · 5.4K views

Decision at SmartZip about SendGrid,Loader.io,Loadtest,LoadAndPerformanceTesting

Avatar of juliendefrance
Principal Software Engineer at Stessa ·
SendGridSendGrid Loader.ioLoader.io
#Loadtest
#LoadAndPerformanceTesting

I was at some point looking for a way toloadtestsome of my environments,staging initially,but including production as well,ultimately,to ensure our ability to scale when facing sudden bursts of requests,and understand how it would impact our load balancers,our instances,our database server...etc.

I came acrossLoader.io,a service bySendGridlabs which not only allowed my team and I to loadtest our API endpoints but also simulate actual user traffic on our website.

#LoadAndPerformanceTesting

3 up亚博平台怎么样votes · 2.6K views

Decision at SmartZip about Amazon SageMaker,Amazon Machine Learning,AWS Lambda,Serverless,FaaS,GCP,PaaS

Avatar of juliendefrance
Principal Software Engineer at Stessa ·

哪一个#IaaS/#PaaSto chose?Not all#Cloudproviders are created equal.As you start to use one or the other,you'll build around very specific services that don't have their equivalent elsewhere.

Back in 2014/2015,this decision I made for SmartZip was a no-brainer and#AWSwon.AWS has been a leader,and over the years demonstrated their capacity to innovate,and reducing toil.Like no other.

Year after year,this kept on being confirmed,as they rolled out new (managed) services,got intoServerlesswithAWS Lambda/FaaSAnd allowed domains such as#AI/#MachineLearningto be put into the hands of every developers thanks toAmazon Machine LearningorAmazon SageMakerfor instance.

Should you compare with#GCPfor instance,it's not quite there yet.Building around these managed services,#AWSallowed me to get my developers on a whole new level.Where they know what's under the hood.Where they know they have these services available and can build around them.Where they care and are responsible for operations and security and deployment of what they've worked on.

2 up亚博平台怎么样votes · 2.5K views

Decision at SmartZip about Zoom,Skype,Join.me,Dialpad,VideoConferencing

Avatar of juliendefrance
Principal Software Engineer at Stessa ·
ZoomZoom SkypeSkype Join.meJoin.me
#Dialpad
#VideoConferencing

哪一个VideoConferencingsoftware to use?

Join.me,#GoToMeeting,Google,Skype...Many of the previous software I experienced disappointed me or my team in many ways: problems joining,voice/video issues,having to register or install software first.And easily,each time we just waste 10-15mn waiting for everyone to join.

Too many signs it was time for a change.

At my previous company,SmartZip,I made the switch to #UberConference.ADialpadservice.We're currently usingZoomat Stessa.I really like it too.

2 up亚博平台怎么样votes · 2.3K views

Decision at SmartZip about Intercom,Zapier,Segment,AutopilotHQ

Avatar of juliendefrance
Principal Software Engineer at Stessa ·

Achieving#MarketingAutomationusingAutopilotHQ

Some of the key aspects evaluated here:- Ability to integrate withSegmentorZapier- Being multi-channel (Not just Email automation)- Dozens of integrations and capabilities: SFDC,In app messages,SMS,Push Notifications,Direct Mail,Segment Events...- Allowing teams to operate outside of engineering dependencies- Segmentation against user attributes / user traits- Static or Dynamic segments- Concept of user journeys- And more

Combined withSegmentand its own sets of integrations and capabilities,AutopilotHQended up being a very powerful tool for Product Marketing to use at SmartZip.

Couple of years later,there certainly were some overlap with the features offered byIntercom's engagement module,but our team kept on using this tool given the greater range of functionality / capabilities.

2 up亚博平台怎么样votes · 1.9K views