2022년 1~2분기 + 요즘 생긴 관심사 정리 (#군대_전역)
1~2 분기 정리
1분기(1, 2, 3 월)는 거의 군대에 있었어서 할 말이 없다. ^^
2년 동안 군대에서 실질적으로 개발을 할 시간은 당연히 거의 없었다. 거기서는 부족한 시간, 사회와의 단절된 gap을 메우려고 불안함에 많은 것을 읽으려 들었던 것 같다. 이제 실전역을 한지 2개월 정도 넘었는데 실제 프로젝트를 하니까 정말 많은 것을 알게되고 흥미로운 것을 시도해보게 됐다.
그때는 다른 사람의 개발 블로그 글을 많이 읽었다. 거기서 눈으로만 본 개발을 직접해보고 서비스를 만드니깐 더 이해하는 컨텍스트도 넓어지고 기억에도 오래남고 더 재미있다ㅎㅎ. 그냥 읽다보면 그 사람이 어떤 문제를 어떻게 해결했는지 금방 까먹는다. 같은 말? 같은 개념을 10번 정도 우연히 중복해서 보게되면 대충 이게 이거였지! 이런 감이 생겼다. 그런데 요즘은 실제로 내가 아이디어를 가지고 코드를 짜며 문제를 해결한다. 이렇게 실제로 해보는게 느낌이 빡! 와서 지금 내 단계에서는 직접 겪고 해보는게 최고로 효율적인 것 같다. 손코딩은 알고리즘만
현재 실시간 통신을 할 수 있는 웹프로젝트를 하고 있다. (사실 이 글도 WebRTC공부하다가 잠시 뇌를 비울겸 쓰고 있다.) 현재 나는 NodeJS기반으로 백엔드를 맡고 있는데 Database도 가물가물하고 처음 쓰는 AWS는 정말 편하고 혁신적이긴한데 뭔가 뜻대로 안 돼서 간단한 자동화에 시간을 반나절 정도 허비하곤한다ㅜㅜ. 최근에는 AWS로 인증서를 붙이는데 하루를 날렸다. 다른 도메인에서 쓰고 있는 주소의 서브도메인에 대해 인증서를 발급하려했는데 잘 안 됐었다.. 여러모로 까먹은 것도 많고 부족한 게 많다.
프로젝트 중이어서 너무 붕 뜨는 기술은 공부하거나 도입하지는 못하겠지만 현재까지 새로 관심이 가는 것들에 대해서 적어보고자 한다.
나중에 프로젝트할 때 해보면 좋을 것 같다.
내 새로운 관심사
Fastify
현재 Node 위에서 개발하고 있다보니 자주 보인다. NestJS라는 프레임워크를 쓰고 있는데 이 녀석도 기본이 Express 위에서 돌아가지만 Fastify도 지원한다고 한다.
속도가 엄청나게 빠르다고 해서 관심이 갔지만 아직 한국어로 된 정보도 별로 없고 Express가 친숙했기 때문에 사용하진 않았다.
다음 프로젝트는 Nest와 Fastify 조합으로 해보고 싶다.
Mobile First Design
보통 데스크탑 디자인을 만들고 모바일을 디자인하는데 반대로 모바일 페이지를 먼저 만드는 접근법이다.
최소한의 디자인을 해야지 핵심만 남는다고 한다. 현재 MVP기반으로 나아가고 있는데 항상 얘기하다보면 멈추고 생각하게 된다.
과연 이것이 핵심인가?
우리가 프로토타입에서 기대할 모습에 이 기능이 포함되어야 하는가?
그렇기 때문에 더 관심이 간다.
물론 이것뿐만이 아니라 큰 그래픽을 쓰지마라, 모바일에서 지원하지 않는 호버를 쓰지마라, 실제 기기에서 테스트하라 등 여러 원칙이 있다.
이번 프로젝트는 디자인도 도움을 받고 있고 모바일에 큰 비중을 두지 않아서 적합하지 않지만 나중에 내가 프로젝트를 기획해서 하게된다면 해볼만하지 않을까 싶다.
언니언 아키텍처
(https://jeffreypalermo.com/2008/07/the-onion-architecture-part-1/)
언니언에 대해서 아 이런게 있구나... 정도는 알고 있었다. 아마 함수형 언어 책에서 처음 들어봤던 것 같은데.. 잘 기억이 안 난다.
현재 나는 프로젝트에 ORM과 비지니스 로직을 한 프로젝트에 작성하고 있다. 최근에 이런 코드에서 ORM이 바뀌면 어떻게 해야 될지 다른 사람과 얘기를 해보았다. 내 코드는 거의 새로 작성을 해야할 것이다.
인프라와 무관한 코드를 만드려면 어댑터 패턴처럼 별도의 인터페이스를 두어서 전혀 다른 것이 오더라도 호환이 되도록해야 하지 않을까..? 라는 생각이 들었다.
오랜기간 유지보수가 되려면 이렇게 인프라와 비지니스 로직에 대해 분리가 필요하다고 한다. 그게 아니더라도 요즘 gRPC, graphql, http, (tRPC라는 것도 생겼다) 등 다양한 프로토콜이 쓰이는데 이런 프로토콜에 의존적이지 않고 데이터베이스에 대해 의존적이지 않는 코드는 매력적이다. 내 마음대로 여러 프로토콜을 쓰며 구현체만 갈아치우면 잘 동작하는 코드를 한번 연습 삼아 짜보려고 한다.
검색해보니 클린 아키텍처, 어니언 아키텍처, 헥사고날 아키텍처, 포트앤어댑터 패턴, DDD, 등 다양한 키워드들이 나온다.
인프라에 전혀 영향 받지 않는 코드에 대한 공부도 해야지!!
Figma
피그마를 처음 써봤다.
서로 의견도 화면에 남길 수도 있고 레이아웃, 화면 비율도 바로 불러와서 작업도 할 수 있고 와이어프레임도 만들 수 있다. PPT로 기획보다 더 나은 방법임은 확실하다.
원래는 XD를 배워보려고 마음이 다시 Figma로 넘어왔다ㅎㅎ. 이번 프로젝트를 기회로 막 사용해보면서 피그마에 익숙해져 보려고 한다.
pnpm
npm도 yarn도 아닌 pnpm(https://github.com/pnpm/pnpm)
빠르고 효율적인 패키지 매니저라고 한다. 요즘 자주 보이는데 한번 사용해보고 비교해보면 좋을 것 같다.
말고도 npm의 node_module을 검색하면서 일어나는 비효율적인 문제를 해결했다는 yarn berry도 한번 써보면 좋을 것 같다.
Bun
최근에 또 새롭게 등장한 자바스크립트 런타임이다. 더 빨라졌다고 한다. 아직 버그가 많다고 하는데 현재 프로젝트가 끝날 때 쯤이면 사용해볼만 하지 않을까 싶다.
사실 내가 기대를 하고 있는 것은 Node개발자가 자신이 만든 Node의 단점을 해결해서 새롭게 만든 Deno이다. Deno는 너무 기대가 돼서 나도 잘 모르지만 정리해서 글을 올린적도 있다. 그리고 같은 프로젝트 팀원에 의해 알게 됐는데 벌써 Deno기반으로 돌아가는 Fresh(https://fresh.deno.dev/)라는 프레임워크도 생겼다. 찾아보니까 Deno를 개발하고 있는 Denoland에서 작업중이다. 과연 Next나 Remix만큼 뜨게될까? 이것도 궁금하다 ㅎㅎ.
Node, Deno, Bun 벌써 전혀 다른 아키텍처를 가진 자바스크립트 런타임이 세 개라니 앞으로가 매우 기대가 된다.
SST(https://docs.sst.dev/)
SST는 풀스택 서버리스를 사용해서 만들 때 도움을 주는 프레임워크이다.
이번 프로젝트에서는 AWS로 최대한 백엔드 코드를 돌리고 핵심에 집중하려고 하고 있다. 그리고 우리 프로젝트에서는 웹소켓이 필요한데 AWS 게이트웨이에서 Websocket을 지원한다. 그러다보니 AWS Lambda랑 Gateway를 쓰려고 하고 있다.
Lambda를 local에서 테스트하기 좀 불편한데 그럴 때 활용하기 좋은 것이 SST(https://docs.sst.dev/live-lambda-development)이다. SST는 클라우드 네이티브 로컬 개발환경을 제공해준다. 내가 람다 코드를 수정하면 이것을 즉각적으로 반영해준다. 기본적으로 내 AWS와 로컬을 프록시해주며 동작한다.
이걸 쓰면 좀 더 편하게 람다를 테스팅하고 개발할 수 있지 않을까..?
요구사항 파악
이것은 소프트스킬인가? 뭔지 애매한데 뭐를 하든 요구사항 파악하는 것이 제일 중요한 일임을 깨닫고 있다.
인프라 구축도 그렇고 기획을 할 때도 그렇고 하위이슈를 만들 때도 그렇고 정확한 요구사항 파악을 해야지 시간 낭비를 안 하게 된다.
서로 알고 생각하는 것이 매우 다르기 때문에 다른 사람과 Sync를 맞춰 가는 가는 과정도 중요하다 느낀다.
읽어볼 글 및 책
함수형
자바스크립트로 함수형을 설명하는 책 두 권이다.
함수형인데 왜 굳이 자바스크립트로..? 라는 의문이 들 수 있다. 자바스크립트도 함수형 언어이다. 함수형 언어에서 대중적이고 핵심적인 부분은 자바스크립트로도 대부분 구현 가능하다. 그리고 자바스크립트는 대중적인 언어라서 함수형에서 보는 관점을 특별한 언어에서만 구현 가능한 것이 아니라는 것을 보여줄 수 있다. 액션, 계산, 데이터의 개념과 고차함수의 활용으로 함수형에서 잘하는 것들을 보여줄 수 있다.
함수형 언어를 공부하다 보면 (나같은) 초보자가 이해하기 힘든 수학적이거나 이론적인 내용이 툭 튀어나와서 어렵게 하곤한다.
보통 그런 자료들은 예시도 실제 우리가 원하는 프로그램의 형태와 동떨어진 경우도 많다. 부수효과가 없는 게임을 누가 즐길 수 있을까?
사실 함수형으로 게임을 만들진 않긴 하지만 부수효과가 있는 프로그램을 만들어야 되는데 쓰지마라고 하면.. 함수형을 어떻게 써라는 건지 고민학 될 수밖에 없다. 데이터 로깅 이런 곳 말고는 쓰면 안되는 것인가? 이런 생각도 들곤한다.
첫 번째 책은 함수형 언어에서 자주 쓰는 것들을 실용적인 코드로 보여준다. 새로운 관점을 원한다면 절차/객체지향만 쓰는 프로그래머라도 읽어도 좋을 것 같다. 이 책은 부수효과를 안 쓰려고 하는 것이 아니라 어떻게 분리하거나 다뤄야 하는지 알려주고 고차함수에 대한 많은 활용법을 알려준다.
그리고 두 번째 책은 자바스크립트로 대중적으로 적용 가능한 함수형 언어에 대한 개념을 알려주는 책이다.
아직 안 읽어봤지만 한번 읽어보고 괜찮으면 함수형을 입문하는 다른 사람들에게 추천해주면 좋을 것 같다.
1. 쏙쏙 들어오는 함수형 코딩(http://www.yes24.com/Product/Goods/108748841)
서점에서 제목을 보고 단순한 함수형 개념을 알려주는 책인가?하고 살지 말지 고민했었다.
그때 목차만 보고 이건 사야돼라는 느낌이 강하게 들어서 바로 샀다. 읽어보면서 느끼는 건데 올해의 인생 책을 건진 것 같다.
2. Professor Frisby's Most Adequate Guide to Functional Programming
(https://mostly-adequate.gitbook.io/mostly-adequate-guide/)
아키텍처
SOLID 원칙같은 것은 혼자 공부해서 알지만 직접 의도적으로 코드에 적용시켜보려고 한 적도 별로 없고 디자인 패턴이나 아키텍처에 대한 고민도 생겼지만 알고 있는 지식이 몇 개 없다.
그래서 새로 나온 Head First Design Pattern과 소프트웨어 아키텍처 101이라는 책 두 권을 샀다.
역할! 책임! 협력!
읽으며 인상 깊은 부분이 있으면 글로 남겨 보겠다 ㅎㅎ.
등등 적고 싶은게 몇 개 더 있는데 나중에 추가하러 오겠다.
이만 다시 공부하러 가본닷,,
댓글
이 글 공유하기
다른 글
-
내 코드에 관한 고민 그리고 앞으로 해야 할 것들 (#NestJS Code Review)
내 코드에 관한 고민 그리고 앞으로 해야 할 것들 (#NestJS Code Review)
2022.12.17 -
2022년 3분기 + 요즘 생긴 관심사 정리 (#모도코_프로젝트)
2022년 3분기 + 요즘 생긴 관심사 정리 (#모도코_프로젝트)
2022.10.04 -
전역 회고log
전역 회고log
2022.01.21 -
2021년 앞으로 하고 싶은 것들 중간 정리
2021년 앞으로 하고 싶은 것들 중간 정리
2021.07.19