There has been quite a bit of discussion about how to move forward with the
Traffic Ops Rewrite in terms of Golang dependencies.  Currently there is
only one dependency for Mocking out the database for unit testing called
https://github.com/DATA-DOG/go-sqlmock. Another that we want to evaluate is
https://github.com/jmoiron/sqlx for accessing Postgres to help with
minimizing Golang boilerplate code.  The following are the Pros and Cons
are listed to he
lp decide (please add any that I failed to include)


Pros
- Developer productivity increases (less boilerplate code)
- Less Developer errors through tedious field mapping
- Active Development

Cons
- Another dependency to maintain if it is no longer supported

Performance
  The performance penalty is neglible (I tested the /api/1.2/servers
endpoint, very loosely, in the Comcast Open Stack lab using the
  same VM and Apache Bench with 1000, 10000, and 10000 separate requests
and the performance was +/-5% depending on the cloud resources that were
active).
  Remember, this endpoint is still 20x faster than the Traffic Ops Perl
version.


So, please review the following PR's specifically noting the servers.go and
servers_test.go files (also browser around to see our progress)

WITH Sqlx
https://github.com/dewrich/incubator-trafficcontrol/blob/4a09d4188be9dd10fb524f2320aeae6fc44e45e3/traffic_ops/traffic_ops_golang/servers.go
https://github.com/dewrich/incubator-trafficcontrol/blob/4a09d4188be9dd10fb524f2320aeae6fc44e45e3/traffic_ops/traffic_ops_golang/servers_test.go

WITHOUT Sqlx
https://github.com/dewrich/incubator-trafficcontrol/blob/89acc848c12f45361b42c4343364dcffe8a7773a/traffic_ops/traffic_ops_golang/servers.go
https://github.com/dewrich/incubator-trafficcontrol/blob/89acc848c12f45361b42c4343364dcffe8a7773a/traffic_ops/traffic_ops_golang/servers_test.go


This vote will be closed by noon this Friday 9/25/2017

Thanks,

-Dew

Reply via email to