1. ๋ค์ด๊ฐ๊ธฐ ์ ,
1.1 ๊ฐ๋ฐ ํ๊ฒฝ ์ค์
1.2 ๋ชจ๋ ๋ฐ ์ํคํ ์ณ
pinot-common | ํ๋ก์ ํธ ์ ๋ฐ์ ๊ณตํต ํด๋์ค๋ค์ ์ ๊ณต (config, metrics, metadata, pql.parsers, request, response, fs, ...) |
pinot-trasnport | Broker์ ๋ถ์ฐ-์์ง์ ์ฒ๋ฆฌํ๋ ํด๋์ค, Server์ Broker์ ์ฐ๊ฒฐ์ ์ฒ๋ฆฌํ๋ nettty์ wrapper ํด๋์ค ๋ฑ |
pinot-core | ์ธ๊ทธ๋จผํธ ์ฒ๋ฆฌ, ์ธ๋ฑ์ค, ์ฟผ๋ฆฌ ๋ฑ ๋ฐ์ดํฐ์ ๊ด๋ จ๋ Pinot์ ํต์ฌ ๊ธฐ๋ฅ์ ์ ๊ณต |
์ ๋ชจ๋๋ค์ด ์ฃผ๋ก ๊ธฐ๋ฐ์ด ๋๋ฉฐ, ๊ทธ ์์ ๋ค์ํ ๋ชจ๋๋ค์ด ์์ด๊ฒ ๋๋ค.
- pinot-server, pinot-controller, pinot-broker
- pinot-minion, pinot-hadoop
2. Pinot ๊ธฐ์ฌํ๊ธฐ
2.1 ์์ ํ๋ฆ
2.1.1. Github ์ด์ ๋ง๋ค๊ธฐ
๋ค์๊ณผ ๊ฐ์ ๋ด์ฉ์ด ํฌํจ๋์ด์ผ ํ๋ฉฐ, 'PEP-Request' ๋ผ๋ฒจ(Pinot Enhancement Proposal)์ ๋ถ์ฌ์ผ ํ๋ค.
- ๋ฌด์์ ํด์ผํ๋๊ฐ?
- ๊ธฐ๋ฅ์ด ํ์ํ ์ด์ ๋ ๋ฌด์์ธ๊ฐ?
- ์ด๊ธฐ ์์ด๋์ด ๋ฐ ์ ์์ด ์๋๊ฐ?
PMC(Project Management Committee)๋ ์ด ์ ์์ ๋ณด๊ณ ์ค๊ณ๋ฌธ์๊ฐ ํ์ํ ์ง, ๋จ์ PR๋ก ํด๊ฒฐ ๊ฐ๋ฅํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ฉฐ, ๋ฆฌ๋ทฐ ๊น์ง 5์ผ ์ ๋์ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์๋ค. PMC๋ก ๋ถํฐ -1 ํ ์์ด, ํ๋ ์ด์์ +1 ํ๋ฅผ ๋ฐ๋๋ค๋ฉด Github Issue์ ๋ํ ๋งํฌ์ ํจ๊ป PR์ ์ ์ถํ ์ ์๋ค.
2.1.2. ์ด์ ๋ธ๋์น ๋ง๋ค๊ธฐ
cd pinot
#
# ensure you are starting from the latest code base
# the following steps, ensure your fork's (origin's) master is up-to-date
#
git fetch upstream
git checkout master
git merge upstream/master
# create a branch for your issue
git checkout -b <your issue branch>
2.1.3. ์ฝ๋ ์์ ํ๊ธฐ
- ์ฝ๋ ๋ฌธ์ํ : public ๋ฉ์๋์ ๋งค๊ฐ๋ณ์์ ๋ํด, Class ๋ ๋ฒจ์ Java docs๋ฅผ ํฌํจํด์ผ ํ๋ค.
- ๋ก๊น : slf4j ๋ก๊ฑฐ๋ฅผ ์ฌ์ฉํ๋ค.
- ํธํ์ฑ : Zookeeper ๋๋ ์ธ๊ทธ๋จผํธ์ ์ ์ฅ๋ ์ํ์ ๊ด๋ จ๋ ๋ณ๊ฒฝ์ ๋ฒ์ ์ ํธํ์ฑ ๋ฌธ์ ๊ฐ ์ค์ํ๋ค.
(ex. ๋ฒ์ ์ ์ ๋ฐ์ดํธ ํ๋ ๊ฒฝ์ฐ, Server์ Broker๊ฐ ๋ฒ์ ์ด ๋ค๋ฅธ ๊ฒฝ์ฐ ๋ฑ) - ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ํ์ฌ ํ๋ก์ ํธ์ ํฌํจ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค ๊ธฐ๋ฅ์ ๋์ฒดํ ์ ์๋ ๊ฒ์ด ์๋๊ฐ?
- ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ง์ ์ ๋ฐ์ดํธ๊ฐ ๋๊ณ ์๋๊ฐ?
- ๋ผ์ด์ ์ค์ ๋ฌธ์ ๋ ์๋๊ฐ?
- ํ
์คํธ
- ๋จ์ ํ ์คํธ : positive, negative case ๋ชจ๋ ํฌํจํด์ผ ํ๋ฉฐ, ํ ์คํธ์ ๋ํ ์ค๋ช ์ด ํฌํจ๋์ด์ผ ํ๋ค.
- IT ํ ์คํธ : Mockito๋ก ๋ชจํน์ ์ํํ๋ฉฐ, REST API์ ๊ฐ ์๋ฌ ์ฝ๋์ ๋ํ IT ํ ์คํธ๋ ํ์๋ก ํฌํจ๋์ด์ผ ํ๋ค.
2.1.4. PR
# 0. ๋ผ์ด์ ์ค ํค๋๋ฅผ ๋ถ์ฌ์ค๋ค.
mvn license:format
# 1. ์คํ์ผ์ ์ ๊ฒํ๋ค.
mvn checkstyle:check
# 2. ๋น๋ํ๋ฉฐ, ํ
์คํธ๋ฅผ ๋๋ ค๋ณธ๋ค.
mvn clean install -Pbin-dist
# 3. Push ํ๋ค.
git add <files required for the change>
git commit -m "Meaningful oneliner for the change"
git push origin <your issue branch>
# After this, create a PullRequest in `github <https://github.com/apache/pinot/pulls>`_. Include the following information in the description:
# * The changes that are included in the PR.
# * Design document, if any.
# * Information on any implementation choices that were made.
# * Evidence of sufficient testing. You ``MUST`` indicate the tests done, either manually or automated.
#
# Once the PR is created, the code base is compiled and all tests are run via ``travis``. Make sure you followup on any issues flagged by travis and address them.
# If you see test failures that are intermittent, ``please`` create an issue to track them.
#
# Once the ``travis`` run is clear, request reviews from atleast 2 committers on the project and be sure to gently to followup on the issue with the reviewers.
# 4. PR ํ ์ฝ๋ฉํธ๋ ๋ณ๊ฒฝ์ฌํญ์ด ์กด์ฌํ ๋๋ ๋ฐ์ํด์ค๋ค.
# commit your changes
git add <updated files>
git commit -m "Meaningful message for the udpate"
# pull new changes
git checkout master
git merge upstream/master
git checkout <your issue branch>
git rebase master
# At this time, if rebase flags any conflicts, resolve the conflicts and follow the instructions provided by the rebase command.
# Run additional tests/validations for the new changes and update the PR by pushing your changes:
git push origin <your issue branch>
2.1.5. ๋ฌธ์ ๋ฐ์
์ฌ๋ ์ฑ๋์ ์ฐธ์ฌํ ์๋ ์๋ค.
'๐ป > MLOps' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
stern : ๋ถ์ฐ ์ฒ๋ฆฌ ํ๋ซํผ ๋ชจ๋ํฐ๋ง (0) | 2024.02.23 |
---|---|
[k8s] `kubectl top` (0) | 2024.01.02 |
Apache Cassandra (0) | 2023.07.31 |
[Pinot] Apache Pinot ๊ฐ๋ฐ ํ๊ฒฝ (0) | 2023.03.05 |
[Pinot] Apache Pinot? (0) | 2022.11.05 |