혹시 여기 계신 닷넷 백엔드 개발자분들은, 처음에 어떻게 개발 공부를 하셨나요?
닷넷으로 백엔드 관련해서 공부하려고 하는데,
물론 마소 공식 문서가 잘 되어있기는 해서 따라해보려고 하고는 있는데,
아예 이런 분야는 처음이라(앱 프론트만 했었습니다) 이해가 잘 안 되는 부분이 많네요 ㅠㅠㅠ…
물론 공식문서, 구글링, 서적 등 여러 경로를 거치면서 공부하셨겠지만,
그럼에도 특히 이걸로 공부했을 때 효과가 좋았다~ 라거나 이걸 주로 참조했다~ 라는게 있을까요?
물론 마소 문서가 짱짱이긴 하지만 ㅎㅎ 혹시라도 있다면 추천 부탁드리겠습니다!
제가 생각하는 백엔드 개발 능력의 상당 부분은 서비스 모델링 및 서비스 모델의 이해라고 생각합니다. 이외의 클라우드 경험, 데이터베이스 경험, API 설계 및 구현 경험 및 기타 개발 및 개발 환경적인 부분은 어느정도 일반 개발 경험을 충분히 쌓으면 곧 잘 익숙해질 수 있는 영역이라고 생각이 들어요.
물론 상세로 들어가면 데이터베이스 설계 및 구축 경험과 클라우드 환경 구축 및 서비스 환경에 맞게 세팅하는 경험, 사용하기 쉽고 체계적인 API 인터페이스 구축 및 관련 환경 경험 등이 수반되어야 할 텐데, 워낙 범위가 방대하므로 하나하나 세세히 모두 잘 하는 방향이 아니라 필요로 하는 요소만 잘 취합해서 서비스에 맞게 구현할 수 있는 능력을 키우는 방향이 좋습니다.
즉, 제가 말씀 드리고 싶은 방향성은 기술 또는 기능 위주의 학습 전개 보다는 필요로 하는 서비스 구현 측면에서 배워야 할 큰 카테고리를 먼저 정리하신 후 목록으로 만들어 그것을 무엇으로 구현할지를 고민해서 학습 전개를 하시는건 어떨까 하는 관점입니다.
좀 더 질문자가 원하는 답변을 드리기 위해서는 궁금해하시는 백엔드 개발 범위를 좀 더 특정해서 말씀해주시면 또다른 답변 드리겠습니다.
제가 생각했을 때 앞으로 하드웨어가 더 발전하고, MAUI 같은 통합 플랫폼이 발전하면 더더욱 프론트 단은 개발 효율성을 위해 쉽고 빠르게 갈 확률이 높다고 생각해서, 앱의 전망에 대해 다소 부정적이었습니다.
(앱 개발을 폄하하는게 아닙니다만 그렇게 보여진다면 죄송합니다ㅠㅠ 앱 개발자로서의 한탄입니다)
가뜩이나 전 디자인 감각도 없어서 경쟁력도 없었구요
그래서 대용량의 데이터를 보내주고 처리하는 로직을 개발하는 것이 앞으로도 더 중요해질 것이라고 생각해서 단순히 백엔드를 공부해야겠다! 라고만 생각했고, 그 결과 질문이 안일해진 것 같네요
일단 아무래도 제가 좀 더 생각해보고 고민해본 다음에 질문드리는 게 좋겠네요 @dimohy 님 좋은 말씀 감사합니다!
RDB와 NoSQL 데이터베이스에 대해 이해가 필요하실꺼에요.
RDB는 데이터베이스에 대한 이해와 스키마 설계 방법 그리고 DDL, DML과 같은 SQL 구문을 익히시면 됩니다.
대표적으로 mysql이 있어요.
NoSQL은 DocumentDB류인 MongoDB나 Column형 DB인 Cassandra를 익히시면 좋습니다
구체적으로 각 DB에 대해 이해하시기 전에 어떨때 RDB를 쓰는지 NoSQL를 쓰는지 이해하시는게 좋습니다.
너무 많다 싶으시면 RDB만 우선 이해하셔도 좋습니다.
백앤드는 주로 도메인 기반 디자인으로 설계 하기 때문에 DDD(Domain Driven Design)를 익히시는게 좋습니다. 에릭 에반스님의 도메인 주도 설계라는 책을 읽어 보셔도 좋을 것 같아요. 읽어 보시면 아시겠지만 이미 하고 있는걸 정리해두었다는 인상을 받으실 수도 있습니다.
그리고 나서 OOP 세계와 RDB 세계를 연결하는 ORM(Object Relational Mapping)에 대해 익히시면 되는데 C# 쪽의 대표 ORM 프레임워크로는 Entity Framework, Dapper, NHibernate 등이 있습니다.
ORM은 간편해서 SQL을 멀리하시게 될 수 있으니 꼭 SQL을 잘 다루시고 나서 ORM을 사용하시기를 권장 드려요.
그리고 RESTFUL API 디자인에 대한 이해가 필요한데 HTTP 프로토콜의 이해가 선제 되어야 하나 웹 프론트를 이미 경험해 보셨기 때문에 컨셉을 이해하시는 것은 그리 어렵지 않으실 것 같아요. ASP.NET CORE로 REST API를 구현하시게 되면 자연스럽게 MVC 패턴을 이해 하시게 되고, Controller, Service, Data로 이어지는 어플리케이션 레이어 설계를 이해 하시게 됩니다.
일반 VM이나 물리서버에 배포한다고 가정하면 여기까지가 기본으로 생각하고 진행하시면 될 것 같아요.
좀더 나아가자면 인증과 권한에 대한 이해가 필요하세요.
OAuth2 기반으로 유저를 인증하고, JWT(JSON Web Token)으로 유저의 Identity를 관리합니다.
그래서 OAuth2와 JWT 토큰에 대한 이해가 필요합니다.
C# 쪽에서는 ASP.NET Core Identity, Azure AD B2C, Identity4 Server 로 검색하시면 도움이 되실 것 같아요.
좀더 욕심을 내자면 각 레이어의 개발 피드백을 빠르게 받기 위해서 TDD의 이해가 필요하게 됩니다.
C# 쪽에서 TDD를 돕는 프레임워크로 xUnit.Net, Autofixture, Fluent Assertions, Moq 등이 있습니다.
그리고 컨테이너 환경에 대한 이해와 운영 환경을 구축하고 서비스를 배포 해 보시면 좋습니다. Docker, Docker Compose, Kubernetes 같은 것인데 차차 해 보시면 좋을 것 같습니다.
공부해보는 것은 나쁘지 않다고 생각해서 말씀드렸어요~
마지막으로 몇가지 링크 공유 드려요.
일단 저도 기본적인 SQL 구문이랑 DB 전공서적 보면서 공부하고 있는데, 정말 공부할 게 많네요 흙흙…
정말 갈 길이 멀어보이긴 하지만… 차근차근 하면 언젠간 저도 도달할 수 있겠죠? ㅎㅎㅎ
정말 자세하게 답변해주셔서 감동받았습니다 ㅠㅠ @nyjin 님 진짜 감사드립니다!!