이번주는 새로운 팀프로젝트 전에 개인 과제를 해보는 주인데 강의를 들으면서도 난이도 상당히 높을거란걸 알 수 있었다.. 지금도
무슨 소린지 솔직히 절반을 이해하고 절반을 흘려보내는 중이다..
오늘 학습한 내용
상수와 변수를 기존에는 여러군데 흩뿌려놓고 사용했지만 유지보수에 용이하도록 중앙 집중식 관리라는 것을 택할 수 있다.
그렇다면 중앙 집중식 관리의 이점은 무엇일까?
- 모든 환경 변수와 상수는 한 곳에서 관리, 다른 파일에서 동일한 값을 사용하여도 일관성을 유지
- 변경이 필요할 때 한 곳에서만 수정하면 됨
- 환경 변수, 상수의 직접 사용이 아니기때문에 코드가 명확해지는 효과
- 필요한 경우 개발, 테스트, 프로덕션 환경별로 다른 설정 사용 가능
만약 중앙 집중식 관리로 인해 하나의 파일이 무거워질 수 있지 않는가?? 라는 물음이 생길 수 있다. 이때는 데이터베이스 관련 설정은 db.js, 서버 설정은 config.js 이렇게 나눌 수 있다.
함수를 작성하다보면
export const onData = (socket) => (data) => {
console.log(data);
};
이런식으로 인자가 2개가 들어간 모습을 볼 수 있다. 이를 커링이라고 하는데 여러 인수를 받는 함수를 인수가 하나인 함수들의 연속으로 변환하는 기법이다.
예를 들어 코드블럭 내의 함수를 기준으로 하면 상위에 onConnection이란 함수가 있다. 즉, onData보다 상위인 onConnection 함수가 가지고 있는 socket도 쓰고 onData에 인자로 오는 data도 쓴다는 것이다.
ORM 없이 DB를 연동하는 방법
커넥션 풀 : 데이터베이스와의 연결을 미리 여러 개 생성하여 풀에 저장, 필요할때마다 재사용하여 성능 향상, 미리 생성된 연결을 사용함으로써 응답 시간 감소
DB 마이그레이션이란?
- 새로운 기능 추가로 인해 스키마 변경이 필요할 때
- 데이터베이스 성능 향상을 위해 구조를 최적화할 때
- 데이터베이스 시스템을 교체할 때 (예: MySQL에서 PostgreSQL로)
트러블 슈팅
WSL 환경에서 mysql db를 생성하였는데 연결이 되지 않는 경우 MySQL이 로컬호스트에서 수신 대기중인지 확인해야한다.
1. 설정 파일을 연다
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
2. 파일 내 bind-address = 127.0.0.1 이 제대로 적용되어있는지 확인한다.
3. 적용되어 있지 않다면 수정한 뒤
sudo service mysql restart
다음 명령으로 변경점을 적용 후 재시작한다.