reducio

❱ 🐇 URL shortener service is written in Scala using Akka-Http and Redis ❰

Stars
68
Forks
4
Open issues
84
Closed issues
0
Last commit
about 2 years ago
Watchers
68
Total releases
0
Total commits
99
Open PRs
81
Closed PRs
16
Repo URL
Platform
License
unlicense
Category
Usecase
Offers premium version?
NO
Proprietary?
NO
About

❱ reduc.io ❰

URL shortener service http://reduc.io/wuXaq

Tech stack

Alternative solutions

We could use following short code gen also:

substr(base62(md5(url)), 6) = 62 ^ 6 //unique short urls
Commands Run

Run docker-compose, it will start api, redis and will expose api port to host.

docker-compose up
Sample usage
# Shorten
curl -i http://localhost:9001 -F "url=https://www.amazon.com/Star-Wars-Battlefront-II-Digital/dp/B072JZZ4XD"

Call shortened url

for ((i=1;i<=100;i++)); do curl -i "http://localhost:9001/SEwuXHhBQw"; done

Get Stats

curl -i "http://localhost:9001/stats/?url=https://www.amazon.com/Star-Wars-Battlefront-II-Digital/dp/B072JZZ4XD"

returns: {"callCount":100}

Create executable

sbt packageBin
Test
sbt test
Gatling Simulation

Simulation users count can be set in application.conf in test resources.

# terminal 1
sbt run

Run simulation in terminal 2

sbt gatling:test gatling:latestReport

Coverage with Report
sbt clean coverage test coverageReport
Improvements

  • Seperate read and write API's
  • Move statistics to different data store and API
  • Add DB support by having write master/replicas and have read replicas
  • Move hit counts to MapReduce job and generate them from the Web Server logs
  • Implement Authentication using JWT authentication protocol with OAuth2 authentication framework
  • API Documentation using swagger or similar
  • Add Host denyList
  • Add Retry policies for Redis calls using Retry or similar one
  • Add Throttling using akka-http-contrib
  • Add Metrics support using akka-http-metrics

z i λ a s a l.

Alternative Projects
No projects found

Subscribe to Open Source Businees Newsletter

Twice a month we will interview people behind open source businesses. We will talk about how they are building a business on top of open source projects.

We'll never share your email with anyone else.