1. 빌드, 테스트, 배포 자동화 환경 구성해 보기
2. 모니터링 환경 구성해 보기(일단 metric만, 추후 log도 확장 여지 있음)
- side-car 형태의 작은 도커 이미지로 만들어서 인스턴스에 붙이기
- 아니면 클라우드 서비스 형태로 모니터링 서비스 만들어보기?!
- 로그인했고 인증된 사용자에 대해
- 웹 ui에서 모니터링 대상 endpoint를 입력하면 그로부터 메트릭을 pulling 해서 시계열 디비(prometheus)에 저장
- 웹 ui에서 대상 지표의 임계치를 입력하면 그로부터 임계치가 넘으면 알람 트리거
- 웹 ui에서 이메일이나 slack web hock 주소를 입력하면 알람이 트리거 될 시 알람 전송
- 레퍼런스
- 진행 중인 프로젝트
3. 클라우드 네이티브로 구성해 보기
- 과거 공부 내용: https://github.com/rnjstjdgh/SpringCloudStudy/issues/1
- Cloud Native Architecture를 따르는 application의 일반적인 구성
- Micro Service / 컨테이너 / CI - CD / Devops
- Cloud Native Architecture를 따르는 application의 일반적인 구성
- spring cloud 프로젝트를 도입해보기
- 중앙화 된 설정 관리: spring cloud config server
- 서비스 위치의 투명성(Service discovery): Eureka
- 로드 벨런싱: Ribbon Client, spring cloud gateway
- 쉬운 REST Client: Feign Client
- 모니터링: Zipkin
- 장애 대응: Hystrix
- 도커나 쿠버
- aws와 같은 클라우드 서비스에 배포.
4. 다른 회사 개발자와 소통
- 다른 개발자 회사 개발 문화 / 개발 습관..?? / 생각..??
- 다른 개발자 회사 기술 셋
- jpa 등 새로운 기술을 접하는 동기부여
- 다른 개발자 마인드 등등 이런 걸 접하는 것만으로도 개발자로서 나의 시야를 키우는데 도움이 될 것 같음.
5. 또 뭐가 있을까..??
- 테스트 코드
- 객체지향
- 공통화할 수 있는 것은 최대한 공통화
- 유지 보수하기 좋은 구조와 코드?
6. 주의할 것
- 너무 한번에 욕심부려서 이도 저도 아니게 하지 말고 하고 싶은 것 중에서 추려서 하나씩이라도 확실히 하는 게 지속할 수 있는 에너지를 줄 것 같음....
- 도메인 적으로 어려운 것을 하게 되면 기술적으로 도전하기 어려워질 것 같음
- 팀 프로젝트라면, 공통의 공통의 목표를 확실하게 만들 것
....
기타 하고 싶은 것...
- spring과 같은 framework를 자체적으로 만들어보기
하고 싶은 게(해야 할게) 너무 많다.....
프로젝트 방향
- 일반적인 서비스 개발
- 생각해보니 꼭 스몰 배민일 필요가 없자나? => 스몰 당근, 스몰 11번가 등등..
- 프론트가 많이 필요
- 클라우드 서비스 형태의 개발
- 프론트가 덜 필요
- 특정 상황으로 제약을 두고 그 상황에 한정한 라이브러리나 프레임워크 개발
- 완전 backend로 한정할 수 있음
- 마땅한 주제가 있을까?
댓글