Today’s Developer Requirements (현대 개발자의 필수덕목)
적당히 돈벌며 회사다니고 있는데, “배움을 멈추면 늙는다” 라는 어느 커뮤니티에 본 글을 떠올리며 뭔가 새로운걸 보고 있다.
새롭다는 것은 NEW 뿐만 아니라 기존 지식의 ENHANCE 도 포함한다.
아무튼 최근에 본 인강(=인터넷강의/Webinar/Video lecture)에서 다음의 슬라이드를 보았다.
Today’s Developer Requirements(현대 개발자의 필수 덕목)
- Horizontal Scale : 서비스의 성능 향상을 위해서 CPU 업그레이드나, RAM 더 꼽는것 말고 서비스를 2개 또는 그 이상으로 분리할 수 있는 능력이다. 요즘은 클라우드가 잘되어 있어서 성능 변경은 정말 쉽지만, 서버를 분리하여 늘리는 - Scale Out 은 능력이 필요하다.
- Realtime Availability : 이건 개발자가 24시간 폰 켜놓고 대기하라는 뜻이 아니라, 데이터가 입력되면 바로 사용할 수 있게 하라는 것이다.
- Flexible Data Model : 고객의 다양한 형태(숫자, 문자, 파일, 이미지)의 입력을 반영하여 변경할 수 있어야 한다.
- Rapid Query Execution : 검색의 요구가 있으면 빠른 실행이 가능해야 한다.
- Sophisticated Query Language : 서비스를 운영하기 위해서 필연적으로 다수의 Table(Index, core) 를 만들게 되는데 이것들의 복잡한 관계를 실행할 수 있어야 한다.
A, B, C 테이블이 서로 관계가 있을때 1) A 결과물을 처리하고 코드상에서 loop를 돌며 다시 B 테이블 결과물을 요청하고, 처리하는 방법과 2) 한번에 JOIN 해서 결과를 얻어오는 방법이 있는데 .
상황에 따라 예외가 있을 수 있지만 거의 대부분 한번에 JOIN 하는 것이 더 빠르다. (쿼리를 잘 짜면 JOIN 도 인덱스를 따른다.)
- Schemaless : 고객의 다양한 종류의 입력을 처리할 수 있어야 한다.
Schemaless 는 좋은 것인지 나쁜 것인지 좀 더 생각해 보아야겠다.
필수덕목이 너무 어렵습니다.ㅠㅠ