안녕하세요.
어느덧 제가 스타트업 회사에서 서버 개발부서 일하게 된 지 2달이 다 되어갑니다. 시간이 참 빠르네요.
간단히 제 소개를 드리자면 저는 아직 대학 졸업을 하지않고 스타트업에 들어가 개발자로 일하고 있는 개발경력이 얼마되지 않는 휴학생입니다. 그래서 요즘 회사에서 일을하며 새롭게 공부하는 내용들이 많습니다. 회사에 들어가지 전에는 올해 초에 React를 이용해서 간단한 웹 SPA를 만들어본 것이 전부입니다. 심지어 그때 firebase를 사용해서 백엔드 개발에 대한 경험은 전무합니다. 저희 회사는 JAVA와 spring을 사용하는데 JAVA는 학부 1학년 때 데이터구조 수업 들으면서 써 본 것이 전부였습니다. 그래서 회사에서 주어진 일을 하기 위해 저는 JAVA부터 다시 공부를 시작했습니다. 현재는 서버 시스템을 하나 만드는 중이어서 Spring Framework, Spring Boot, Spring Security, Spring Cloud, Docker, Kubernentes 등... 짧은 시간 안에 굉장히 많은 것들을 겉핥기식으로 공부했습니다(물론 현재 진행형입니다). 그러다 든 생각이 제가 공부한 것들을 어떤 식으로든 정리하지 않으면 머릿속에서 쉽게 날아가겠구나라는 것을 느꼈습니다. 실제로 시스템을 만드는데 필요에 의해 공부를 하다 보니 분명히 공부했던 내용인데 기억이 안났고 또다시 찾아보게 되는 일이 허다했습니다. 그래서 퇴근 후 짧은 시간을 내서라도 제가 회사에서 공부한 것들을 정리를 해야겠다는 생각을 했습니다. [주니어 개발자의 퇴근 후 글쓰기] 시리즈를 그래서 시작하게 된 것입니다. 기술적인 부분들이 아니더라도 회사에서 일하면서 들었던 생각이나 새롭게 알게 된 사실을 정리한다면 회사에서 굉장히 빠른 속도로 성장할 수 있지 않을까에 대한 기대감도 이 시리즈를 시작하는데 동기부여가 되어 주었습니다.
정리하자면 회사에서 얻은 경험들을 효과적으로 양분 삼아 성장하고 싶은 마음에 [주니어 개발자의 퇴근 후 글쓰기]를 시작합니다. 시리즈에서는 회사에서 공부한 내용들을 정리, 혹은 회사에서 느낀 점들을 공유할 예정입니다. 매일 글을 올리는 것이 좋겠지만 제 성격상 그러지는 않을 것 같고 그냥 꾸준히 1주일에 최소 한 개의 글은 올리는 것이 목표입니다.
두서가 길었네요. 그럼 오늘은 제가 회사에 들어가서 백엔드 개발을 시작하며 가장 처음 접하게 된 Spring Framework에 대해서 얘기해보겠습니다. 시작하기 앞서 이 글은 spring framework에 대한 자세한 설명을 하는 글이 아니라 그냥 회사에서 spring을 공부하면서 들었던 저의 생각과 알게 된 것을 적을 글입니다. 그럼 시작하겠습니다.
회사에 들어가기 전 저의 지적 수준에 대해 알려드리자면 전 백엔드 개발이란 'RESTFul API를 만드는 것', 그리고 spring이란 'JAVA를 이용해 백엔드 개발을 하기 위한 프레임워크'라고 알고 있었습니다. 그리고 회사에 들어간 후 spring으로 시스템을 만들어야해서 책을 사서 공부를 시작했습니다. 전 당연히 spring으로 서버를 시작하고 url을 mapping 해 controller를 만드는 방법에 대해서 책이 설명할 줄 알았습니다. 근데 처음 나온 내용은 처음 들어보는 DI에 대한 내용이었습니다. ???: 뭐야 이거. 정말 생각지도 못한 내용이라 무작정 읽기는 했는데 하나도 이해가 안 갔습니다. 그래서 이걸로 어떻게 API 서버를 만들라는 건지... REST API를 제공하는 백엔드 서버를 만들려고 spring 공부를 시작했는데 DI 그리고 뿐만 아니라 IoC니 AOP니 이런 것부터 나오니 도저히 갈피를 잡을 수가 없었습니다. 그래서 저는 책을 덮고 이 책은 이상하다 생각해서 강의를 보기 시작했습니다. 그런데 강의도 책이랑 설명하는 내용이 거기서 거기였습니다. 또 DI, IoC, AOP.... 그때 저는 제가 spring에 대해서 뭔지 제대로 모르고 있다는 느낌을 받았습니다. 그래서 그때부터 spring이 무엇인지 찾아보기 시작했습니다.
알고 보니 spring은 웹 백엔드 서버만을 만들기 위한 프레임워크가 아니라 그냥 자바로 엔터프라이즈 소프트웨어를 만들기 위한 프레임워크였습니다. 그리고 지금은 DI, IoC, AOP는 그런 엔터프라이즈 제품을 만들기 위해 spring이라는 생태계가 여러 프레임워크를 통해 제공하는 기능인 거구나 정도로 이해하고 있습니다. 제가 그토록 궁금해하던 REST API 서버를 만들기 위해서는 spring 프레임워크 중 Spring MVC를 사용해야 했습니다. 그때부터 저는 어디로 나아가야 할지 길이 보이는 느낌이었고 강의들을 찾아보며 각각의 프레임워크에 대해 공부했습니다.
그러다가 또 마주한 것이 spring boot입니다. 요즘은 spring 개발을 주로 spring boot를 사용하는 것 같았습니다. 이건 또 뭐냐. 그래서 또 찾아보기 시작했습니다. 그래서 내린 결론은 그냥 'spring project를 빠르고 쉽게 시작할 수 있도록 spring framework만을 사용하면 귀찮게 설정해줘야 하는 것들을 간단하게 할 수 있도록 도와주는 도구' 정도로 이해했습니다.
위에서 설명한 내용을 정리하자면 아래와 같습니다
- spring framework - 자바로 엔터프라이즈 소프트웨어를 개발하기 위해 필요한 기능들을 제공하는 프레임워크
- spring boot - spring project를 빠르고 쉽게 시작할 수 있도록 도와주는 도구
이제 스프링이 뭔지 완전 대충은 아시겠나요? 사실 정확히는 저도 잘 모르겠습니다 ㅎㅎ. 이것만 안다고 스프링으로 개발을 할 수 있는 것도 아니죠. 저는 요즘 spring boot 기반으로 spring security, spring cloud gateway등을 사용해 MSA 시스템을 만들고 있는 중입니다. 기회가 된다면 각각에 대해서 얘기해보는 글을 써보는 것도 좋을 것 같네요. 요즘 계속 새로운 것들을 공부하며 점점 윤곽이 잡히는 느낌이 듭니다. 꾸준히 공부하여 언젠가는 spring을 자유롭게 활용해 백엔드 개발을 하고싶습니다.
오늘 글은 처음 쓰는 거라 좀 정리가 안된 느낌이 있네요. 계속 꾸준히 글을 쓰면 늘지 않을까 기대합니다...
그럼 시리즈 첫 글을 마치겠습니다.
감사합니다.
'개발 공부 > WEB' 카테고리의 다른 글
[React] <></>에 key props 추가하는 방법 (0) | 2022.03.30 |
---|---|
[React] 배열 렌더링 시 key props를 사용하는 이유 (0) | 2022.03.27 |
[React] setState가 바로 적용되지 않는 이유 (1) | 2022.02.12 |
[Next.js] Data Fetching을 하는 4가지 방법 (0) | 2021.12.21 |
글자수 세기 웹페이지 만들기 (2) | 2020.08.27 |