20240301 기술매니저님 Q&A
Q. 인메모리 데이터베이스란?
A.
-cpu와 가까운 메모리(휘발성:한번 끄면 사라짐) 를 사용하여 DB를 사용한다.
그럼 처리를 더 빨리 할 수 있다. 메모리는 다른 사람과 공유 할 수 있다.
DB는 하드디스크와 더 멀기 때문에 처리가 조금 더 느리다.
-데이터 종합성(서버가 꼬이지 않는다)
트랜잭션 자동화 기능의 장점이 있다.
Q. table lock 많이 사용하나요?
A. 트랜잭션이 끝날 때까지 lock 을 하여 다른 사람이 읽고 쓰지 못하게 한다.
erd 만들 때 기본키는 그냥 id, 참조키는 테이블 이름을 붙인다.
미들웨어 폴더 안에 Joi는 빼는게 좋다. 스키마만 작성했기 때문에 미들웨어 폴더 안에 있으면 오해할 수 있으니 그냥 validation 폴더만 따로 미들웨어 밖에 있는게 좋다.
API의 try에서 if문으로 return 하는 부분은 throw Error로 처리하는 게 좋다.
그렇게 throw Error 로 처리하면 그게 catch부분으로 갈 것!
4.express validator보다 joi가 더 깔끔해보인다. 앞으로도 joi 써야겠다!
Q. 스키마 작성 시 데이터 타입 중 int도 있고 다른 숫자형 타입도 있는데 뭘 쓰는게 좋을지?
A.정확하면 정확할수록 좋다.
Q. 회원가입할 때 POST인 이유
A. JWT는 자원이 생긴것이니 GET이 아닌 Post 사용. 그래서 return 도 201 사용.
-Layered Architecture
Controller -> Service -> Repository
우리가 router에서 입력한 것을 3부분으로 나눈다.
3가지로 나누는 이유는 코드 수정이 보다 더 간단해지기 때문이다.
Controller나 Repository는 수정을 잘 안하고, Service만 수정하게 되는 경우가 많다.
우리가 나중에 testCode를 짤텐데(로직이 잘 돌아가는지 확인) 이 때도 Service부분에서
테스트코드를 돌리기 때문에 더 간단하다.
DB에서 우리는 mysql만 사용하고 있는데 다른 db를 사용한다고 해도,
프리즈마에서 mysql부분만 바꾸면 되기 때문에 크게 신경 쓸 필요가 없다.
-스레드 = 일꾼
Q. Git hub
보통 branch를 만들어 사용한다.
main이 있고, dev branch를 만든다. dev에서 feature라는 branch를 만든다?
1. feature -> dev
2. dev -> main
-회사 들어가면 보통 main, dev가 있을 것이다. 우린 dev에서 브랜치를 만들고 작업을 한다. (git checkout -b feature/a)
그리고 작업을 하면 pr을 dev브랜치로 날린다. 그러면 상사가 dev를 보고 확인해서 main으로 합친다.
-main에 올리는 순간 아마 배포가 자동으로 될 것(CI/CD).
스타트업은 수동으로 해야할 수도 있다.
-testCode도 아마 깃허브가 돌려줄 수 있다. 그런데 통과 되도 버그가 생길 수도 있다. 그럼 HOTPIX라는 브랜치에서 급하게 버그 수정하여 dev를 안거치고 바로 메인으로 보낸다.
이런 과정을 git flow라고 한다. 일종의 방법론.