it-infra-group-study / golang-study

golang study
4 stars 1 forks source link

장기적으로 만들어갈꺼 이야기 해봐요 #5

Open keyolk opened 5 years ago

keyolk commented 5 years ago

전 그전에 이야기하긴 했는데 git storage를 기반으로 이런저런 설정 관리하고 서빙하고 알려주고 하는거 해보면 재밌을것 같아요. 하다가 아니다 싶으면 그냥 적당히 다른길로 가기도 쉬울것 같고 ... 단계를 나눠보면 아래같은식으로 해보면 어떨까요 ?

  1. CLI만들기
    • flag 및 sub command 등 다루기
  2. 설정관리하기
    • json, yml, toml 등
  3. API 서버 만들기
    • rest, graphql, grpc 등
    • OIDC 등 OAuth 기반 인증 달아보기
    • TLS적용하고 인증서 rotation 하기, let's encrypt나 vault 등 활용 ?
  4. data encoding
    • json, xml 등
  5. Data Embeding
    • image나 binary 및 html 등 asset 등
  6. Git API 활용
    • 무관하긴한데 GitHub API도 활용하면 재밌을것 같아요.
  7. SNS API 활용
    • slack, discord 등
  8. Raft Log 활용
  9. 상태머신 정의하고 활용

위를 다 하자는건 당연히 아니고 그냥 저런 방향으로 한번 만들어보면 이후 뭐든 갖고 놀기 좀 편하지 않을까 ...

만드는 중간중간에 성능 평가나 테스트 및 CI방법 등 이야기할것도 많을것 같고 재밌을것 같아요. go ci는 어떻게 구성하는게 좋을지나 module cache나 go test 들 구성 debuging어떻게 할건지 등등 ...

Cestrum commented 5 years ago

일단 말씀해 주신 내용에 대해서는 매우 긍정적으로 생각됩니다! 추가적으로 각 단계마다 Go 에 대한 방향성이나 Golang 특유의 언어에 대한 특성 같은 것들도 필요시에 같이 준비를 해서 이야기를 하는것도 좋을 것 같습니다!

keyolk commented 5 years ago

CLI 및 Configuration 관리

위가 많이 잘알려진 애들인데 기본 gopkg 내 flag 살짝 살펴보고 일루 넘어가면 좋을것 같아요.

시작 컨셉은 약간 https://line.github.io/centraldogma/concepts.html 이런거 좀 참고해서 CLI로 git repo 랑 user에 대한 CRUD를 만드는거 먼저 하면 어떨까 싶습니당.

보다보니 설정관리를 시작으로 https://www.weave.works/technologies/gitops/

위같은거 참고해서 느슨한 형태의 CD 정도 까지 해줘도 좋을것 같네요 ㅎ plugin 형태로 kube나 ansible 같은거 지원해주고 ... ?

Cestrum commented 5 years ago

git repo에 대한건 어떤걸 하면 되는지 잘 이해가 안되고 있습니다 ㅠㅜ..... 그리고 user 에 대한 CRUD 도 마찬가지구요..... 말 그대로 OS 상에 user 에 대한 CRUD 를 한다는게 useradd userdel 명령을 대신해서 하신다는 말씀인지..... 컨셉을 제대로 이해를 못하고 있네요 ㅎㅎ;;

keyolk commented 5 years ago

그냥 단순하게는 config 관리정도를 생각했고 이걸 프로젝트별로 git 으로 버전 관리하면서 접근제어나 설정 템플릿팅, 설정 히스토리 검색 등을 붙이면 좋겠다 싶었던건데요 대충 생각하기엔 프로젝트 생성마다 repo 가 1-N개 할당되고 이에 따라 사용자 접근 제어가 필요해 보여가지고 대~충 생각을 해봤었어요. LDAP나 github auth 같은거랑 도 엮을 수 있지 않을지 ...

Cestrum commented 5 years ago

오옷 무슨 말씀이신지 어느정도 이해가 된 것 같네요 ㅎㅎ 일단 먼저 config 관리? 부터 하는 것 부터 시작을 해야 할 것 같네요 제일 간단하게 시작할 수 있는 부분이 그런 부분인것 같네요. 그리고 그 담에 git 에 대한 push 등을 할 수 있게끔? 더 추가로 모듈로 붙이든가 하면 좋을 것 같습니다!!!