보시는 시각에 따라 닷넷 커뮤니티에서 자극적인 제목일수 있습니다.
하지만 오해하시는 그런 의도로 제목을 정한것 아닙니다.
개인적인 경험으로 겪은 저의 사례를 공유하고자 합니다.
저는 .Net 개발자이지만, 실무에서 Java도 약간 다뤄보았습니다. 전 직장에서는 개발자 수급 문제로 Java를 도입하게 되었고, 새로 오신 CTO님께서 Java를 배우도록 권유했습니다.
이전에는 Java를 언어로만 알고 있었고, .Net에만 매몰되있는 상황이었지만
그러나 CTO님께서 개발팀에 제시한 아키텍처를 간단히 정리하면 다음과 같습니다.
Git Branch 전략
개발
Spring Boot Framework
ORM,Hibernate,SQLMapper,Templet Engine
웹서버
- Apache(https://www.blogger.com/blog/post/edit/6046404121560927415/836080442342391009#)
- NginX
WAS
Tomcat
DB , NOSQL - DB 종류 별 랭킹 : [https://db-engines.com/en/ranking]
* redis : [https://redis.io/]
* couchbase : [https://www.couchbase.com/]
* mongodb : [https://www.mongodb.com/]
* cassandra : [http://cassandra.apache.org/]
* mariadb : [https://mariadb.org/]
Container
Docker ,Kubernetes
APM : Application Performance Management
Pinpoint(NHN 공개 오픈소스)
Scouter(LG CNS 공개 오픈소스, 전 제니퍼소프트CTO가 직접 개발)
성능테스트 - 오픈소스 성능테스트 툴
- Jmeter : [https://jmeter.apache.org/]
- nGrinder
트러블 슈팅
인털리 J
CI,CD
젠키스,GIT
등등
대용량 엔터프라이즈 환경에서 개발하셨던 분이라 이런식으로 시스템을 설계 하셨습니다.
지금은 일반적인지 몰라도 당시에는 저한테 신선한 충격이었습니다.
윈도우즈 서버 IIS에 단순 배포만을 했는데 저렇게 Git전략을 써서 형상관리를 하고
CI,CD 무중단 배포 Scouter 로 이용한 실시간 부하 모니터링
거기에 Jira,confuluce등으로 프로젝트 관리기법 체계적으로 Devops를 구성하는데
아 내가 그동안 아마츄어 였구나 느꼈습니다.
spring boot 도 구조를 봤을때 ? 상당히 .net rest api 와 유사하고 기본적인 개념을 동일하지만
개발 인력풀 이 많다보니 ? 대단위 개발에 다양한 방법론이 많이 발전해 있었어요
기본적으로 저 구조의 시스템은 당연히 .net에도 있고 오히려 더 잘되있는지도 모릅니다.
하지만 현실적으로 대단위 시스템을 접하기 힘든 .net 개발자와 달리 java 쪽은 대형 프로젝트가
많고 거기에 자연히 방법론이 많이 발전해있습니다.
Library도 개발 또는 발굴 되있는 경우가 많습니다.
저는 저 구조를 보고 저걸 .Net 으로 컨버전 해봤습니다.
Git에 젠키스를 연결해서 CI,CD 를 구축하고 Branch 전략으로 형상관리를 하고
APM 을 구축하기 위해서 influx 제품군을 사용해 System metric을 저장하고
grafana 로 실시간 모니터링을 구축했습니다.
그리고 Couchbase와 Redis로 nosql 을 활용해봤습니다.
이렇게 기존에 다른 플랫폼이지만 레퍼런스 삼기 좋은 구조를 보면서 저한테는
단순 개발보다는 플랫폼을 구성하는데 있어 많은 참고가 되고 엔터프라이즈 사고와
아이디어 방법론에 대해서 많이 참고가 되고 실무에 어떻게 적용해야 하는지
좋은 참고가 됐던것 같습니다.
이게 실증 사례가 있으니 그동안 뭐에 쓰는지 몰랐던 기능이 이런것구나
찾아보게 되고 목적을 알게 되더라구요
그리고 open source 진영에 있는 라이브러리는 거의 99% .net 에도 있고 지원합니다.