개발은 개념싸움이야🫠 5

[DB] 트랜잭션(transaction) 과 격리성 수준

📌 트랜잭션이란 - 트랜잭션이란 한 번 질의가 실행되면 질의가 모두 수행되거나 모두 수행되지 않는 작업수행의 논리적 단위입니다. - 질의(query)를 하나의 묶음 처리해서 만약 중간에 실행이 중단됐을 경우, 처음부터 다시 실행하는 Rollback을 수행하고, 오류없이 실행을 마치면 commit을 하는 실행 단위를 의미합니다. - 트랜잭션은 작업수행의 논리적 단위이므로 DBMS의 성능을 초당 트랜잭션 실행 수(TPS : Transaction per second)로 측정합니다. - 데이터베이스 트랜잭션은 ACID 라는 특성을 가지고 있습니다. 📌 ACID 데이터베이스 내에서 일어나는 하나의 트랜잭션의 안정성을 보장하기 위해 필요한 성질입니다. Atomicity (원자성) 한 트랜잭션 내에서 실행한 작업들은..

CQRS 란 무엇인가

📌 들어가며 현재 개발 중인 쿠폰 도메인에는 CQRS 패턴이 구현되어 있습니다. 이러한 CQRS 패턴이 무엇인지에 대해 경력직 채용시 면접 질문으로 질문 했다는 얘기를 점심시간에 듣게 되었습니다. 그리하여 이번 포스팅을 통해 애매하게 알고 있던 개념을 정리하고자 합니다. 📌 CQRS 패턴을 사용하게 되는 이유 만약 주문 내역 조회 기능을 구현하게 된다면 여러 애그리거트에 접근하여 데이터를 조회해 와야 합니다. Order에서 주문정보를, Product 에서는 상품에 대한 정보를 Member에서는 회원 관련 정보를 불러와야 합니다. 그런데 조회 화면은 그 특성상 api 의 응답 속도가 빠를 수록 좋은데 이러한 상황에서는 한 번의 select 쿼리 조회로 필요한 데이터를 읽을 수 없어 조회 속도에 문제가 생길..

Refresh Token 이란

📌 들어가며 지난 포스팅에서는 access token 과 session 에 대해서 알아 보았습니다. 이번 포스팅에서는 refresh token에 대해서 알아보고자 합니다. 사실 refresh token에 대해 알아보고자 했던 이유는 얼마 전 같은 팀원 분이 경력직 면접의 면접관으로 들어갔는데 지원자분께 refresh token에 대해 물었더니 제대로 설명을 못해서 충격적이었다 라는 말을 듣게 되어서 였습니다. 비록 현재는 인증과 인가와 관련된 개발을 하고 있지 않지만 인증과 인가는 백엔드 개발자라면 반드시 알아야 하는 개념이라고 생각합니다. 📌 Refresh Token은 왜 사용할까? Refresh Token을 사용하는 가장 큰 이유 중 하나는 보안문제 입니다. 토큰을 서버에서 관리하지 않기 때문에 서버..

Session 과 Token 방식을 활용한 '인증'과 '인가'란?

📌 들어가며 백엔드 개발자로서 피할 수 없는 개발 영역 중 하나가 session 혹은 token을 이용한 사용자 인증/인가 방식에 대한 개발 부분입니다. 해당 부분은 개인정보와도 밀접하게 연관되어 있는 부분이고 보안사항에서도 중요한 부분입니다. 만약 잘못될 경우 A 사용자의 화면에서 B 사용자의 정보가 담긴 화면이 보이는 등 큰 사고로 이어질 수 있습니다.(이런 사례가 발생하여 사용자가 언론제보 및 신고할 경우... 개인정보 탈취 등과 관련하여 회사는 큰 고초를 겪게 될 수 있습니다..😂) 이처럼 인증과 인가 부분은 매우 중요한 개발 영역이라고 할 수 있습니다. 불행인지 다행인지.. 저는 아직 입사 이후 '인증'관련 도메인은 개발해 본 적이 없어 대략적으로 회원 인증하는 절차에 대해서만 알고 있었는데요...

객체란 무엇인가 - 객체(object), 클래스(class) , 인스턴스(instance)

📌 들어가며 개발과 관련된 업무를 하다보면 '객체'라는 용어를 자주 사용하게 됩니다. "객체를 생성해서...", "객체를 넘겨서..." 등등 이러한 객체의 정의에 대해 한번쯤은 짚고 넘어가야 할 필요가 있을 것 같아 이번 포스팅을 통해 정리해보고자 합니다. 📌 객체의 정의 객체에 대한 정의는 어떠한 관점에서 정의하느냐에 따라 다르게 정리할 수 있습니다. 사전적 의미 : 먼저 사전적 의미로서의 객체는 '실제 존재하는 것'을 말합니다. 컴퓨터 과학 : 컴퓨터 과학에서의 객체 또는 오브젝트(object)는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것을 의미합니다. 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미하며 변수, 자료구조, 함수 또는 메소드가 이에 해당할 수..