Skip to content

스칼라로 도전하는 직업적 백엔드 프로그래밍

Notifications You must be signed in to change notification settings

hatemogi/scala-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scala로 도전하는 직업적 백엔드 프로그래밍

현업 업무에 스칼라를 쓸 때 알아두면 좋을 예제 사전

왜 스칼라로 하는가?

한 줄 요약: JVM 환경의 잇점을 누리면서 함수형 프로그래밍도 만끽한다

제 주변의 백엔드 업무 환경은 자바를 위주로 한 JVM 환경을 기본으로 합니다. 하지만, 자바는 프로그래밍 언어로써는 좀 아쉬운 점이 있지요. 그렇다고 JVM을 벗어나자니 이미 있는 기존 라이브러리나 연동 환경을 버리게 되어 아깝고 힘이 듭니다. 그러니 JVM은 사용하되, 자바보다 나은 개발 언어 선택한다면, 더 즐겁고 효과적인 백엔드 개발을 할 수 있겠다고 생각합니다. JVM 바탕의 자바가 아닌 언어 중에 유명한 것은 Kotlin, Clojure, Scala 등이 있습니다.

코틀린은 자바와의 상호 운영성이 매우 편리한 장점이 있지만, 함수형 프로그래밍을 추구하기에는 좀 아쉬운 점이 있습니다. 아주 훌륭한 자바라고 보시면 되고, 아마도 단기간에 백엔드 프로그래밍의 표준으로 자리 잡을 수 있을 거라고 생각합니다. 보수적이고 레거시가 많은 환경에서도 코틀린 정도는 효과적으로 적용할 수 있으리라 예상합니다.

클로저는 함수형 프로그래밍 언어이자, 끝장 강력하고 유연한데, 이미 우리에게 익숙한 OOP를 휙 떠나게 되고(전 그래서 좋지만), 그 색다른 문법에 당황하며 거부감을 느끼는 사람이 많습니다. 배워두면 참 좋고, 업무용으로도 활용하고 싶지만, 다른 개발자를 섭외하기가 쉽지 않습니다.

스칼라는 본격 함수형 프로그래밍을 시작할 수 있으면서도, 기존의 명령형 OOP를 혼용해서 쓸 수 있습니다. 이미 있는 JVM 라이브러리들을 기존 스타일대로 가져다 쓰면서 점진적으로 함수형 프로그래밍을 적용할 수 있는 매력이 있습니다. 게다가 Apache Spark 같은 훌륭한 실용 제품 덕에 대용량 데이터를 다루는 곳에서는 이미 잘 쓰고 있다는 점이 특징입니다.

백엔드 시스템이 해야 할 일

한 줄 요약: 몇 가지 주요 작업만 할 수 있으면 무슨 언어로 개발해도 되는 것 아닌가?

결국 직업적인 백엔드 개발자가 서비스를 개발할 때 처리해야 할 일은 아래에 나열한 일들이 중요한 것 같습니다.

  • HTTP 요청/응답 처리 (서버측 & 클라이언트측 모두)
  • 데이터 모델과 JSON 문자열 상호 변환 (또는 protobuf 등의 데이터 포맷으로 상호 변환)
  • 관계형 데이터베이스 JDBC 연동
  • 아파치 카프카 Producer/Consumer/Stream API 연결
  • Redis 클라이언트 연결
  • 환경설정 파일이나 환경변수 편하게 읽어 쓰기
  • 단위 테스트
  • 로깅 / 디버깅 / 프로파일링 / 성능 모니터링

각 회사나 팀마다, 주로 쓰는 서비스도 조금씩은 다를 테고, 아예 AWS 등의 클라우드 서비스를 연동해서 사용해야 할 수도 있겠지만, 크게는 위의 작업으로 대부분 커버될 것 같습니다. 다시 말해 이 정도 작업을 빠르게 적용해서 할 수 있다면, 스칼라로 실무 프로젝트를 개발해도 되는 것 아닐까요?

결국, 어떤 새로운 프로그래밍 언어로 시스템을 구축하려면, 프로그래밍 언어의 문법만 익히면 되는 일이 아니라, 평소 주로 하는 작업들을 새로운 언어와 라이브러리들을 써서 신속 정확하게 구축하는 일이 중요할 것입니다. 이 정도 작업들을 스칼라로 처리하는 간단한 예제라도 한 묶음 있다면 좋겠습니다.

또 다른 누군가 백엔드 프로그래머가 스칼라로 새 프로젝트를 진행한다면, 그분들께도 도움이 될 것 같다는 이 샘플 프로젝트를 준비합니다. 스칼라로 현업 백엔드 개발을 (시작) 한다면 여기 앞으로 적을 예제 코드들을 참고하시면 좋겠습니다.

연재문서

라이선스

About

스칼라로 도전하는 직업적 백엔드 프로그래밍

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages