본문 바로가기

개발일기32

개발의 세계관 옛날 세계관: 반복문, 조건문, 변수, 함수 요즘 세계관: 반복문, 조건문, 변수, 함수, class, interface 2023. 6. 21.
[Node] node로 크롤러 개발 이슈들 정리 개발할 것 특정 웹사이트 크롤링 개발 언어 python의 셀레니움도 생각헀지만, 너무 흔하고 이미 해본 것이라 신선함도 느껴볼 겸 puppeteer를 써보기로 했다. puppeteer는 구글이 개발했다고 한다. 바로 신뢰도 200%. 타입스크립트로 진행했다. 무한스크롤 관련 이슈를 제외하면 개발 자체 난이도는 높지 않았다. 프로세스가 멈추었는지 여부를 보여주기 위해 프로그레스바를 이용해 진행 상태의 시각적 효과를 추가했다. 빌드는 webpack을 이용했다. 전달 방식에 대한 고민 첫 번째 생각 분명 상대방 컴퓨터의 node 설치관련 문제가 있을 거라 생각했다. 그래서 pkg라는 라이브러리로 바이너리 실행파일을 만들어 전달하려고 했지만, puppeteer가 문제였다. 직접 브라우저를 조작하여 크롤링하기 때.. 2023. 5. 15.
마이크로서비스 핵심 개념 6가지 독립적 배포 하나의 마이크로 서비스만 단독으로 배포 가능해야함. 도메인을 중심의 모델링 한 마이크로서비스, 한 기능(즉, 결합도를 최대한 낮춰야함) 고유한 상태를 가짐 마이크로서비스 간 DB를 고유하지 않음. 데이터를 공유하지 않음 크기가 적당해야함 마이크로서비스는 조직이 다룰 수 있는 개수 이상을 넘어가지 말아야함(복잡도를 키우지 말아야한다는 뜻인듯) 마이크로서비스 간의 경계를 명확하게 정의 유연함 판을 키우지 말고 점진적으로 마이크로서비스로 넘어가는 것을 권장 마이크로서비스는 옵션이기 때문에 맹목적으로 매몰될 필요는 없다라고 해석됨 전 회사에서도 MSA로 가기로 결정 후 장바구니 관련 서비스를 따로 마이크로서비스로 뺐었음 아키텍쳐와 조직을 맞추기 조직 구조를 아키텍쳐에 맞게, 도메인에 맞게 편성 프론.. 2023. 5. 13.
암호학에서의 솔트(salt) 암호학에서 솔트(salt)는 데이터, 비밀번호, 통과암호를 해시 처리하는 단방향 함수의 추가 입력으로 사용되는 랜덤 데이터이다. 솔트는 스토리지에서 비밀번호를 보호하기 위해 사용된다. 사용자의 비밀번호를 암호화처리할 때, 단순히 암호화하는 것이 아니라 사용자의 비밀번호에 랜덤한 솔트값(소금같은 존재라 salt인듯...)을 더해서 해시 처리한다. 예를 들면, 비밀번호가 1234라고 하고 솔트값이 abcd라고 하면 1234abcd로 해시 처리하는 것. 그래서 솔트가 무슨 의미가 있는가? 솔트값 없이 비밀번호를 암호화한다면 같은 패턴으로 암호화되기 때문에 동일한 비밀번호는 동일한 해시값을 가지게 된다. 솔트값을 추가함으로써 동일한 비밀번호를 가진 두 사용자의 해시값이 다르게 저장되므로, 해커가 해시값을 추측하.. 2023. 4. 12.
처음으로 외주를 하면서 느낀 점 회사가 망하고 낙심하고 있던 중, 아는 데이터 엔지니어 분이 대학 후배가 스타트업을 차리는데 MVP 개발 외주를 해주지 않겠냐고 제안하셨다. 기간은 1달 정도라고 하셨고, 다음 회사에 갈 때까지 하면 되겠다 싶어 승낙하게 되었다. (얼마 걸릴 것이다 라는 말을 믿으면 절대 안됨!) 그리고 약 1달이 지났는데 아직 끝이 명확하게 보이지는 않는다. 1~2주내로 끝날 거 같긴 한데 이게 폴리싱 작업이 끝도 없다. 백엔드와 프론트엔드는 각각 어느 정도 마무리가 되었는데 이걸 연결하려고 하다보니 생기는 문제점들과 미처 생각하지 못한 소소한 부분들이 계속 발견되면서 작업 속도가 느려지고 있다. 이래서 처음 생각한 기간의 2~3배는 잡아라라는 말이 있는건가... 어떻게 끝내기야 하겠지만 함부로 외주를 받는게 아니라는.. 2022. 10. 3.