Austin Ogre
Contributor
@maverick asked me a couple of great questions in my intro thread and I felt like they deserved a broader conversation so I've moved them here. Hopefully others will add their thoughts as well.
I've worked on 3 major SaaS start-ups and each of them used really different technology stacks.
Start-up 1: Primarily java & javascript front end, used an open source project for a large piece of core functionality which was written in PHP (open source project called Horde). Backend was a mix of everything but primarily C and java. We were early adopters of a number of toolsets and at one point ran the largest Puppet deployment in the world.
Start-up 2: Primarily a javascript front-end I think we were using a UI framework similar to Bootstrap (though I forget which one exactly) for look and feel. Backend was a mix of java, c# and a bunch of PowerShell.
Start-up 3: Mostly javascript front-end. Backend is a mix of C, Lua (which is a game dev language actually) and pretty much everything under the sun in at least small amounts.
So across these I guess java and javascript are pretty common. And that makes sense when you're developing a web based application. Lots of developers in that pool to choose from and outsourcing project work can be pretty straightforward/modular. I know there are lots of open source libraries we've used, but I don't have a great list. Some of those projects died a slow death and sometimes we tried a project and moved on to another if it didn't meet our needs.
I do like AdminLTE as a UI framework for reporting though. I was actually looking at it last fall for a personal project. For reporting internally we often use tools like Grafana and Kibana. Our logging and reporting needs are a bit crazy... I think we publicly stated we generated logs at a rate of 50GB/s in 2013 (it's uh... more now).
One thing I would point out is that as you're thinking about rendering logs/data to customers for reporting you need to think a lot about how the data is stored, when you can show aggregate data across all customers and when/how you need to display customer specific data. If you're tracking all the website visits in say Apache logs then the queries to pull out data specific to a customer can be a little tricky... more so if you want to allow them to drill down into individual visits (it's one thing to be slightly off in your query when you are reporting aggregates) but when you drill down to a specific log entry it damn well better be for the customer in question.
But the key is to make sure you're storing and collecting data first. Every login attempt for a user should be logged for example along with customer ID, username, origin IP, success or failure. Would it be nice to show in a UI? Yes, but the more critical point is to have the data. If you needed to you could run a SQL query to give that information to a customer. They might bitch that it's not in the UI, but at least you can get it.
Frameworks are good. Bootstrap, AdminLTE? Yep, highly recommend where they make sense. Where they don't as tools themselves they still suggest good design patterns which can be used/reused. When I did product management I really didn't focus on toolsets. I mocked up a basic UI, talked about the intended functionality, use cases and possible long term features I didn't want to box us out of in our initial design decisions. Then I sort of set the developers free and using agile development check pointed with them often to course correct, get their feedback on what an idiot I was and try to adapt based on their feedback. Fun stuff.
Not sure that exactly answered your question(s), but hopefully it's enough random babble to open a good discussion here on the topic.
Ogre
1- What tools/templates would you recommend using to minimize the amount of development work that is needed? I'm mainly interested in hearing what open source tech you generally use (e.g. AdminLTE for your admin area: AdminLTE 2 | Dashboard). The tech stack that you use is also interesting to know.
Thanks!
I've worked on 3 major SaaS start-ups and each of them used really different technology stacks.
Start-up 1: Primarily java & javascript front end, used an open source project for a large piece of core functionality which was written in PHP (open source project called Horde). Backend was a mix of everything but primarily C and java. We were early adopters of a number of toolsets and at one point ran the largest Puppet deployment in the world.
Start-up 2: Primarily a javascript front-end I think we were using a UI framework similar to Bootstrap (though I forget which one exactly) for look and feel. Backend was a mix of java, c# and a bunch of PowerShell.
Start-up 3: Mostly javascript front-end. Backend is a mix of C, Lua (which is a game dev language actually) and pretty much everything under the sun in at least small amounts.
So across these I guess java and javascript are pretty common. And that makes sense when you're developing a web based application. Lots of developers in that pool to choose from and outsourcing project work can be pretty straightforward/modular. I know there are lots of open source libraries we've used, but I don't have a great list. Some of those projects died a slow death and sometimes we tried a project and moved on to another if it didn't meet our needs.
I do like AdminLTE as a UI framework for reporting though. I was actually looking at it last fall for a personal project. For reporting internally we often use tools like Grafana and Kibana. Our logging and reporting needs are a bit crazy... I think we publicly stated we generated logs at a rate of 50GB/s in 2013 (it's uh... more now).
One thing I would point out is that as you're thinking about rendering logs/data to customers for reporting you need to think a lot about how the data is stored, when you can show aggregate data across all customers and when/how you need to display customer specific data. If you're tracking all the website visits in say Apache logs then the queries to pull out data specific to a customer can be a little tricky... more so if you want to allow them to drill down into individual visits (it's one thing to be slightly off in your query when you are reporting aggregates) but when you drill down to a specific log entry it damn well better be for the customer in question.
But the key is to make sure you're storing and collecting data first. Every login attempt for a user should be logged for example along with customer ID, username, origin IP, success or failure. Would it be nice to show in a UI? Yes, but the more critical point is to have the data. If you needed to you could run a SQL query to give that information to a customer. They might bitch that it's not in the UI, but at least you can get it.
Frameworks are good. Bootstrap, AdminLTE? Yep, highly recommend where they make sense. Where they don't as tools themselves they still suggest good design patterns which can be used/reused. When I did product management I really didn't focus on toolsets. I mocked up a basic UI, talked about the intended functionality, use cases and possible long term features I didn't want to box us out of in our initial design decisions. Then I sort of set the developers free and using agile development check pointed with them often to course correct, get their feedback on what an idiot I was and try to adapt based on their feedback. Fun stuff.
Not sure that exactly answered your question(s), but hopefully it's enough random babble to open a good discussion here on the topic.
Ogre
Dislike ads? Remove them and support the forum:
Subscribe to Fastlane Insiders.
Last edited: