본문 바로가기

잡다한 지식39

[SPF] SPF 레코드 네이버 웍스에서 이메일 전송을 하다가 스팸으로 빠진 현상이 발견 되었습니다. 알아보니 SPF 레코드에 문제가 있어서 그런거라고 하더라구요. SPF(Sender Policy Framework)란? 일종의 메일 발송 서버 등록 제도로 해당 도메인을 통해 이메일을 보낼 수 있도록 ip주소를 지정해서 허용시키는 것입니다. 즉, 해당 ip를 허용 안시켜주면 정당한 메일로 못봐서 스팸으로 빠지는 형식인거 같습니다. SPF를 설정하게되면 제3자가 해당 도메인의 메일 주소를 사칭하여 스팸이나 피싱 메일을 보내는 것을 방지할 수 있습니다. 설정을 하기 위해서 자기 도메인의 DNS에 설정을 해야합니다. (SPF레코드는 메일 서버 IP를 회사 도메인 DNS의 TXT 레코드를 사용하며 도메인 소유자가 직접 설정해야합니다.) .. 2024. 11. 12.
[SEQUELIZE] create와 bulkCreate 현재 코드 여러곳에서 create / bulkCreate를 사용하고 있었습니다. 많은코드가 얽혀있는 상태에서 항상 특정 부분에서 문제가 생기는데 이때까지는 생각 못했지만... bulkCreate를 트랜잭션까지 연결해서 진행하다보니 시간이 계속 걸림에 따라 트랜잭션 오류가 발생했습니다. 생각을 해보니 많은 양의 데이터를 다루게 될때const arr = [];const transaction = await db.seqeulize.transaction();for(let i = 0 ; i  이런 식으로 보게되면 create는 하나하나 진행하기때문에 개별적으로 transaction을 잡고 순서대로 처리하기에 타임아웃에 덜 민감하지만, bulkCreate는 대량의 데이터를 한번에 묶어서 진행하기때문에 더 민감할 수 .. 2024. 11. 4.
[JS] 문제 있는 url 주소 찾기 토큰 검사를 하는 미드웨어를 사용하고 있는데 어는 부분에서는 정상적으로 작동하고, 다른 부분에서는 문제가 생기는 경우가 생기고 있었습니다. 너무 많은 api를 다루고 있다보니 도대체 어느 미드웨어에서 오류가 생기는지 파악이 안되고 있어서 확인이 힘들었는데 프론트에 연결하자니 시간이 걸릴꺼 같아 백단에서 처리하는 방법을 찾았습니다. 간단하지만, 전혀 신경을 안쓰고 있었는데.... 토큰이 아예 없는 경우로 넘어오는 경우 해당 valid 에 다음과 같은 값을 넣습니다. console.log(`check method: ${req.method}`);console.log(`check url: ${req.url}`); 이러면 해당 주소를 제대로 체크해서 어느 부분에서 문제 일어났는지 파악이 가능합니다. 2024. 10. 22.
[SQL] tinyint 타입에 대한 인덱싱 작업 인덱싱 작업이란? 보통 사전 처럼 정리가 필요한 걸 나중에 찾기 위해 미리 준비하는 작업이라고 보는데 tinyint 값인 경우 boolean이라 0 혹은 1 으로만 보통 이루어져 있어서 인덱싱 작업이 필요없다고 생각했습니다. 근데 데이터가 많아지고 확인할 부분이 많아지면서, 인덱싱 작업을 한번 해봤는데 속도 차이가 확실히 보였습니다. 확인해보니 자주 조회가 되는 필드면 tinyint여도 인덱싱 작업이 필요하다고 합니다. 해당 필드로 where 절 / join / order 절 등 엄청나게 많이 사용되는 경우라면 인덱싱 작업을 통해서 속도를 좀 더 개선 할 수 있습니다. 대신, 값의 분포가 적거나 필드 업데이트가 많다면 피하는게 맞다고 봅니다. 2024. 9. 26.
[SQL] WITH 쿼리 DB 데이터에서 중복된 값들 을 group by 시켜서 가져와 그 중 desc를 쓰고 싶었으나... group by 를 하게되면 항상 asc 형태를 가져와 원하는 값을 못사용 하는 경우가 있었습니다. 그래서 방법을 찾아보니 WITH 함수가 있다고 하더라구여!! WITH 문법은 SQL에서 공통 테이블 표현식(CTE, Common Table Expression)을 정의하는데 사용됩니다. 이를 통해 복잡한 쿼리나 서브쿼리를 보다 간단하게 작성하고, 반복적으로 사용해야 하는 쿼리 부분을 재사용할 수 있습니다.WITH new_data AS ( SELECT column1, column2 FROM table WHERE conditions)SELECT column1, column2FROM new_dat.. 2024. 9. 9.
[AWS] Redis 와 DynamoDB 비교 (순수 의견) [Redis / DynamoDB 비교]특징RedisDynamoDB확장성수동 설정 필요자동 확장설정 및 관리복잡함간단함일관성애매일관성능매우 빠름 (인메모리)빠름 (디스크)비용메모리 기반사용량 기반 Redis와 DynamoDB를 두개 다 사용하고 있는 점에서 두가지를 비교했을때 표와 같이 나타낼 수 있습니다. 처음에는 Redis만 사용을 했는데 사실 메모리 기반이라 정해진 틀에서 써보고 늘리냐 줄이냐 이런식으로 진행하는 경우가 큽니다. 물론, 트래픽이 늘어나면서 redis 사용이 많아지는 경우에는 어느 정도 커버를 할 수 있다고는 하지만 매일 그렇게 발생하는게 아니면 정해진 메모리 안에서 사용하는게 득일 수도 독이 될 수도 있다고 봅니다. 반면, DynamoDB를 사용하는 경우에는 알아서 사용량에 따라 비용.. 2024. 8. 6.