본문 바로가기

주절주절(Thoughts)

학생때 백엔드 개발과 실무 백엔드 개발의 차이

나는 학생 때에도 개발로 돈을 벌어 보겠다면서, 웹, 앱 출시를 하며 개발을 했었다.

큰 돈은 아니지만, 실제로 돈을 벌 수 있다는 것이 좋았다.

 

ChatGPT도 없던 시절이라, 혼자서 온갖 고생을 하면서 서비스 출시를 해야했는데, 그 때는 실무의 개발이란 무엇일까 학생들의 포트폴리오식 개발과는 프로젝트가 다를 것이라고 생각하며, 경험 위주의 글들을 많이 찾아봤던 것 같다.

 

그래서 일까, 현재는 실무를 하면서도 실무에서 개발하는 만큼 뭔가 다른 성장을 해야한다고 느껴서인지, 학생 때와 실무 때의 차이를 찾는 것 같다.

극 초기 스타트업에서 개발을 하고 있기 때문에, 도움을 받을 수 있는 환경이라기 보다는, 혼자서 해결해야하는 일이 많다.

 

오늘은 백엔드 개발자로서 학생 때와 실무자의 개발 차이점을 정리해본다.

 

백엔드 개발에 있어서 가장 큰 차이점은, "동시성"을 생각하느냐? 안하느냐? 인것 같다.

 

보통 학생 때에는, 동시성을 생각하면서 개발하지는 않는다. 생각을 좀 한다고 하면, 비동기 처리인 것 같다. 즉, 속도에 초점을 맞춘다. RTT정도 생각하는것 같다.

 

내가 느낀 실무에서는, 서비스가 "확장"될 준비가 되어 있느냐? 인것 같다.

우리 서비스가 커질 수도 있고, 그대로 일 수도 있지만, 서비스가 커져야 할때, 커질 수 있는 가?는 다른 문제이기 때문이다.

실제로, "이 서비스는 우리 메인서비스가 아니니까" 하면서 빠르게만 만들었다가, 의도치 않게 서비스가 인기몰이를 하면서, 큰 난감을 받은 케이스를 다른 개발자들로부터 전해 들었다.

 

그럼 이 "확장"이 무엇인지를 정의 해봐야하는데, 여기서 말하는 확장은 인프라 레벨에서 수평확장이 가능한가? 와 프로세스 레벨에서 수평확장이 가능한가? 이다.

 

그냥 단순히 프로세스를 여러개 띄었을 때, 동시성 문제가 발생하지 않고, 원자성을 보장하면서 서비스가 동작하느냐?

만약 서비스가 커져야 하면, 인스턴스(VM)을 더 띄웠을 때, 문제 없이 잘 돌아가느냐? 

이 두가지만 생각하고, 개발하면 중간은 가는 것 같다.

  • 세마포어를 고려해야하는 가?
  • API호출에는 제한이 있는가?
  • 중복을 고려할 것인가?

나는 이 부분이 백엔드 실무자들이 말하는, "설계"에 해당하는 것 같다.

극 초기 스타트업이라도 "동시성 문제"와 "수평확장"은 무조건 생각해야 겠다는 확고한 생각이 들고 있다.

그리고, 이것을 할 줄 아는 것이 "백엔드 개발자"의 중요 역할이라는 생각이 든다.

 

이것이 학생 때와 실무 개발자의 차이인 것 같다.

학생 때에는 서비스 출시와 기능에 초점을 맞추어서 "동시성"에 도달하지 못한다.

왜냐하면, "어차피 많은 사람들이 쓰지 않으니까", "포트폴리오로 제출 할 거니까" 라고 생각하기 때문이다.

나 또한 그랬고, 동시성은 생각치도 못했다.

 

이 글을 보는 학생이 있다면, 본인이 해온 프로젝트를 한번 되돌아 보길 추천한다.

그리고, 수평확장이 가능한지를 확인해봐라. 특히, 인프라 레벨에서..

그리고, 그것을 생각하면서 개발을 하기 시작한다면, 쉬워보였던 CRUD 코드도 로직이 많이 달리질 것이고, 고려사항도 많아지고, 이는 곧 성장이 될 것이다.