Software Studio @ cs.hanynag
Duplicated in GitHub for sort out my tasks.
- Use Docker (10pts)
- Performance Comparison (using arcus) (20pts)
- Use nBase-ARC (20pts)
- Use multi-node (10pts)
- Use Hubblemon (10pts)
- Use nGrinder (10pts)
- Naver Open Source Contribution
Using Docker with arcus, MySQL, nBase-ARC.
API app is simple flask app for performance comparison.
All settings are stored in settings.json
. you can change enviroments for you own service.
Powered by flask, support simple RestfulAPI for performance comparison.
API Lists
GET
:/init
Initialize database, create testset table, and insert some records.GET
:/mysql
Select some integer from mysql (range 0 - testsize)GET
:/arcus
Select some integer from arcus if missed, select from mysql and add to arcusGET
:/nbase
Select some integer from nbase if missed, select from mysql and add to nbase
Pulling from public mysql dockerfile(version 5.7
, but it can also latest
).
There are some enviroments for mysql db.
- MYSQL_ROOT_PASSWORD: password
- MYSQL_USER: maybe
- MYSQL_PASSWORD: password
- MYSQL_DATABASE: ite3068
Pulling from ruo91/arcus and some appendix scripts for memcached server.
See arcus/install.sh
. It provide arcus to memcached server list and set up zookeeper and memcached.
It automatically run after docker container started.
Pulling from hyeongseok05/nbase-arc. Dockerfile prepare all for start nbase-arc, so just start docker container is enough.
It's difficult to compose all of docker container in a single docker-compose
.
Because, arcus and memcached require settins after container started.
So, hubblemon run each mysql
, arcus
, nbase
.
To do this, after each container started, process hubblemon/install.sh
.
Script contains below
- Install depedency (It takes time depending on the internet(or repo server) speed)
- Clone hubblemon repository
- Copy each setting
- Install python dependency
- Run server
nGrinder supports writing a script that sends an HTTP request and sends it to the agent for testing. The web server receives the HTTP request and can communicate with the mysql server or the arcus server. Now you can actually write those scripts through nGrinder to compare performance differences between using the mysql server directly and the arcus server.
You can test the performance in nGrinder by calling the api created in the flask app above.
Just run application, it uses docker service.
python app.py start
for stop service,
python app.py stop
Require python3
, docker
only.