Welcome to 'This is My Architecture'.
I'm Danny, and I'm here with Kesha
to talk about Salary Overflow.
- Welcome to the show, Kesha. - Hi, Danny, it's great to be here.
Can you tell me a little bit more about Salary Overflow?
Sure, so, when you hear the term Salary Overflow
think Stack Overflow, but for Salaries.
I created Salary Overflow to bring transparency
to tech salaries, with the overall goal
of hoping to reduce the gender pay gap
and give people, specially women, the data they need
to help negotiate their salaries.
OK, so I'm a user of this new application,
can you tell me what happens first?
Sure, so you go to salaryoverflow.com
and you're met with a log-in screen
that is served up from S3 to CloudFront
to your browser.
Excellent. So now, I assume I have to log-in...
Yes. To see the data.
Yes. How does that happen?
So, you're met with the log-in screen
and I use Cognito user pools
as the authentication piece for my web application.
If you are a new user, the very first time you log-in
Cognito will trigger a Lambda
and that Lambda then enters data, the new user record,
into the Aurora MySQL database.
So, I see that you're using Aurora here,
why did you choose Aurora?
Right, so, when I started thinking about the design
for this system I had two options,
I had DynamoDB, NoSQL,
and I had Aurora, and I decided to
use Aurora because my data is relational.
OK. So now, we're going to pull this data back
and show it to the user, how does that happen?
Yes, so, I use, for the API layer, I use GraphQL,
and so from the website, I use GraphQL APIs
to communicate with the data, to either retrieve it
or update it.
Why did you choose GraphQL?
Well, with GraphQL, I have experience working with
REST APIs and that is very rigid, so, for example,
when you first create a REST API, if you're bringing back
five elements, you get five elements back,
each time you call the API.
With GraphQL and AppSync, I have the flexibility
to only query for what I need and bring back
exactly what I need, and that may change
with the different screens, so, it offers
a lot of flexibility.
Do you do any user tracking?
Yes, so, I use Pinpoint,
it's up here, for metrics, so I'm able to track
user sessions and authentication.
And I see this is a serverless architecture,
did you use any frameworks to help you build it?
Yes, I used Amplify, so, AWS Amplify is a tool
that really helped me stand up the majority
of these components in about two and a half weeks.
Wow, that's fast. Yes, rapid delivery.
Can you tell me about some future plans
you have for this architecture?
Yes, so, I released Salary Overflow about
a month ago, and I have now close to two thousand
sign-ups, once I reach five thousand I'm going to
integrate Amazon SageMaker and machine-learning models
that I will use to make salary predictions,
and really give people hard data that they can use
to help negotiate their salary.
Can you tell me about your release pipeline?
Sure. Out of the box, AWS Amplify
comes with a CI/CD pipeline built in,
and it really allows me to scale the development team,
so there are feature branches in my version control
that map nicely to the AWS Amplify back-end portion,
so I have a PROD environment, a DEV environment
and a TEST environment,
and as I merge or move changes from development
and I check them in to a certain branch,
it automatically deploys, and I got all of that
out of the box.
This is a really important project, salary transparency
is important in negotiations.
I'd like to thank you for building this application
and for sharing your architecture with us today.
And thank you for watching 'This is My Architecture'.