Learning · Web Development

SK AX 상생 아카데미 스프링 부트 개발 실무 교육 후기

Spring Boot API 및 Advanced 개발 실무 교육 후기입니다.

S
Ship Knowledge

조회 123

SK AX 상생 아카데미 스프링 부트 개발 실무 교육 후기

두 달 전 즈음, SK AX 상생 아카데미에서 제공하는 현장 교육에 참석할 수 있는 기회가 주어졌습니다. 여러 과정 가운데 어떤 교육을 수강할지 고민하다가, 평소 더 깊이 배우고 싶었던 Spring Boot API 및 Advanced 개발 실무 과정을 선택하게 되었습니다.

이번 교육에서는 REST API, JWT 기반 인증과 인가, 캐싱, 비동기 처리, 마이크로 서비스(MSA) 등 실무에서 자주 접하게 되는 주제를 다루고 있었습니다. 교육 내용이 어땠는지, 교육을 통해 배울 수 있었던 것은 무엇이었는지 후기를 남겨봅니다.

3일 간의 SK AX 판교 캠퍼스 출근

교육 장소의 위치는 판교에 있는 SK AX 판교 캠퍼스였습니다. 교육 시간은 오전 9시부터 오후 5시까지 3일 간 진행되었고, 실습을 위한 PC는 교육장에 미리 준비되어 있어서 출석만 하면 되므로 편했습니다. 개인적으로는 판교와 집의 거리가 멀어서 오가는 길이 피곤하면 교육에 집중하기가 어려울 듯하여 근처에 숙소를 잡고 3일 동안 교육 장소로 출퇴근 하였습니다.

교육해주신 강사님께서는 지금도 현직에서 근무하고 계시는 분이셨고, 실무에서 직접 경험하셨던 사례와 프로젝트 이야기를 함께 들려주셔서 단순히 기능을 배우는 것이 아니라, 실제 업무에서는 왜 이런 기술을 사용하는지까지 이해할 수 있었습니다.

교육은 개념 설명 후 바로 실습을 진행하는 방식이었으며, 실습 프로젝트 안에도 과제가 자세히 정리되어 있어 따라가기 편했습니다.

REST API?

REST API는 웹 서비스에서 HTTP를 통해 통신할 때 균일하게 통신하기 위한 표준이라고 할 수 있고, REST 원칙에 충실하게 설계된 웹 API를 RESTful API라고 하죠. 회사에서 웹 개발을 종종 하게 되는데 사실 REST API의 원칙에 따라서 URI를 설계하는 경우는 많이 없었던 것 같습니다. 하지만 요즘 Codex 같은 AI 개발 도구들도 자연스럽게 REST API 형태로 코드를 생성하고, 프로젝트 요구사항에도 REST API 기반 설계를 요구하는 경우가 많습니다. 그만큼 REST API는 웹 서비스의 표준이라고 할 수 있는데 정작 나는 소홀히 했구나, 하는 생각을 갖게 되었죠.

REST API의 원칙 중 하나는 URI 자체로 리소스를 표현한다는 것입니다. 그렇기 때문에 동사보다는 명사를 사용해야 하고, 각 리소스의 관계는 계층형으로 표현해줘야 합니다.

/users/1
/users/1/orders/231

지금까지 해왔던 프로젝트들을 떠올려보면 REST 원칙에 따라서 URI를 설계했던 적이 없다시피 한 것 같습니다. 현재 유지보수 중인 프로젝트도 생각해보니 URI가 온통 동사였던 것이 생각나네요.

REST API를 배우면서 REST의 또 다른 원칙 중 하나, Stateless가 참 유용하다는 것도 알게 되었습니다. 서버에 클라이언트의 상태를 저장하지 않고 클라이언트의 상태 정보를 매번 요청하기 때문에 서버가 여러 대 늘어나도 무방하고, 코드도 단순해지며 장애에도 대비하기 좋다는 점을 배우게 되니, 현재 유지보수 중인 프로젝트도 리팩토링을 해봐야겠다고 마음 먹게 되었습니다.

마이크로 서비스?

이번 교육을 통해 처음 접한 개념이 바로 마이크로 서비스(Microservice Architecture, MSA)였습니다.

위 이미지는 AWS 공식 웹에 있는 마이크로 서비스에 대한 설명 이미지입니다. 기존에는 하나의 애플리케이션 안에 여러 기능들이 같이 들어 있는 방식으로 서비스가 구현되었습니다. 가령 쇼핑몰을 개발한다고 했을 때, 쇼핑몰이라는 큰 프로그램 안에 회원 가입, 장바구니, 결제와 같은 기능이 탑재되어 있는 방식이죠. 이것을 모놀리식이라고도 합니다.

반면 마이크로 서비스는 에플리케이션 안에 있어야 하는 여러 기능들을, 각각의 독립된 프로그램의 형태로 구현하는 것입니다. 쇼핑몰을 개발한다고 하면 회원 가입 프로그램, 장바구니 프로그램, 결제 프로그램이 각각 독립적으로 있고 각 프로그램들은 REST API, KafKa 등을 활용하여 서로 통신하도록 하는 것입니다.

마이크로 서비스를 활용하면 특정 서비스만 독립적으로 배포할 수도 있고, 장애가 다른 기능에 미칠 수 있는 영향을 줄일 수 있습니다. 뿐만 아니라 개발을 여러 팀이 동시에 할 수 있고, 코드에 대한 충돌도 줄어들 수 있습니다.

이번 교육을 통해 하나의 아키텍처로서의 마이크로 서비스에 흥미를 가지게 되었고, 개인 프로젝트에서는 한 번쯤 적용해보고 싶다는 생각이 들었습니다.

교육을 마치고..

3일간 교육을 들으면서, 우선 바쁜 업무에서 잠시 벗어나 무언가를 배우는 데에 집중할 수 있는 시간이 주어진 것 자체가 참 좋았습니다.

REST API처럼 평소 이름만 알고 있던 개념들을 더 자세히 알 수 있었고 마이크로 서비스와 같이 접하지 못햇던 내용들도 새롭게 배울 수 있었습니다. 그렇다보니 현재 유지보수 중인 프로젝트를 바라보는 시각도 조금은 달라질 수 있게 된 것 같습니다.

이렇게 새로운 것을 배우는 시간을 꾸준히 가져보면서 스스로에게 좋은 자극을 주지 않으면 트렌드를 따라가기 어렵겠다는 생각도 들면서 공부에 대한 동기부여를 다시 가질 수 있었습니다.