서론 면접 질문으로 크롬의 탭은 프로세스인지 스레드인지, 그리고 왜 그렇게 생각하는지에 대해 질문이 왔다. 이 글에서는 브라우저가 탭을 어떻게 관리하는지, 그리고 왜 그렇게 관리하는지를 조사해보려구 한다. 고맙게도 Chrome Developer Blog에서 브라우저 관련 내부 동작 원리를 설명해주는 글이 있다. 이 글에서도 설명하겠지만, 자세한 내용은 아래 내용 참고. 웹 브라우저의 내부 살펴보기 크롬의 탭은 프로세스다. (멀티 프로세스) (나는 프로세스로 답했다가, 경량화 문제를 의심하고 멀티 스레드라고 답을 바꿨다.) 크롬은 멀티 프로세스를 사용하며 IPC(Inter Process Communication, 프로세스 간 통신)을 사용한다. 만약, 특정 탭이 응답하지 않을 때는 동작하지 않는 탭의 프로..
서론"FK란 무엇인지, 왜 사용하는지, 언제 사용하는지 설명해주세요." 모의 면접에서 질문이 나왔다. 이부분을 조금 더 깊게 공부해보려고 한다. FK란 무엇이고 왜 사용하는가?Foreign Key는 외래키라고 부른다. RDBMS에서 관계를 지정할 때 사용합니다. 하지만, FK 말고 일반 컬럼으로도 관계를 표현할 수 있지만, 그럼에도 FK를 사용하는 이유는 *참조 무결성 제약조건을 설정할 수 있기 때문입니다. (참조 무결성은 RDBMS에서 FK와 PK간의 일관성을 유지하는 것입니다.) 관계의 종류는 어떻게 되나요?기본적으로 RDBMS에서는 아래 네가지 종류의 관계를 지원해줍니다.One-to-OneOne-to-Many / Many-to-OneMany-to-Many 각 관계 매핑에 따라 장단점과 적절한 예시를..
데이터베이스 락이란? Lock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법입니다. 데이터베이스 트랜잭션과 격리성의 이해가 있어야 이해하기 쉬우실겁니다. Lock의 종류 공유(Shared) Lock 배타(Exclusive) Lock 이를 쉽게 말하면.. 공유락: Read Lock(읽기 락) 배타락: Write Lock(쓰기 락) 이라고 말합니다. 해당 글에서는 읽기 락과 쓰기 락이라고 표현하겠습니다. 읽기 락(i. e. 공유 락) 읽기 락은 자원을 읽을 때 사용됩니다. 읽기 락의 특징은 읽기 Lock끼리 하나의 자원을 읽을 때 여러 사용자(트랜잭션)가 동시에 접근할 수 있다는 것입니다. 쓰기 락(i. e. 배타 락) 쓰기 락은 데이터를 변경할 때 사용합니다. 트랜잭션이 완료될때까지 유지됩니다. 배 타락..
데이터베이스 트랜잭션 격리 수준데이터베이스 트랜잭션의 격리 수준은 격리성(각각의 트랜잭션은 서로 간섭없이 독립적으로 수행되어야한다는 규칙)의 견고함 정도를 말합니다.트랜잭션 격리 수준트랜잭션의 격리 수준은 총 네 단계로 나뉩니다.READ UNCOMMITEDREAD COMMITEDREPEATABLE READSERIALIZABLEREAD-UNCOMMITED가 가장 성능이 낮은 대신 가볍고, SERIALIZABLE이 가장 성능이 높으며 무겁습니다.때문에 프로덕트 케이스에 맞는 트랜잭션 격리 수준을 선택하면 되겠습니다. 성능이 좋고 나쁘고는 어떻게 판단하나요?성능을 판별하는 기준은 격리성을 얼마나 잘 유지하느냐입니다.위에서 설명한 네가지 격리 수준에서는 아래와 같은 이슈가 발생합니다.DIRTY READNON-R..
트랜잭션(Transaction) postgresql을 기준으로 작성되어있습니다. 트랜잭션: 데이터베이스 관리 시스템에서의 최소 상호작용의 단위 개요 데이터베이스 트랜잭션은 데이터베이스에서 수행되는 일련의 작업이며 모두 단일한 논리적 작업 단위입니다. 즉, 특정 트랜잭션을 일부만 수행하거나 결과를 저장하는 경우는 절대 존재할 수 없습니다. 결과는 무조건 성공 / 실패만 존재합니다. 트랜잭션은 여러개의 DML으로 이루어질 수 있습니다. DML(Data Manipulation Language)이란 데이터 조작 언어라는 뜻으로 CRUD의 행동을 제어합니다. SELECT (READ) INSERT (CREATE) UPDATE (UPDATE) DELETE (DELETE) 트랜잭션을 쪼개면 여러 DML이 존재할 수 있..
서론CS 스터디를 준비하다가 웹 보안에 대한 주제로 스터디를 진행하기로 하였다. 그 중 JWT에 대한 내용을 조사하다가 고민해본 점을 정리한다. What is JWTJSON Web Token의 준말입니다. 자바스크립트의 Object(Key Value) 자료구조를 가지고 있으며, Web Token으로써 사용할 수 있다는 의미다. JWT 사용 이유HTTP는 기본적으로 state-less를 지향합니다. state-less(무상태)란? 서버-클라이언트 구조에서 서버가 클라이언트의 상태를 가지고 있지 않는 것.장점1: 서버의 확장성이 높으며 대량의 트래픽이 발생해도 대처할 수 있음.장점2: (서버가 분리되어 있는 경우) 특정 DB/서버에 의존하지 않아도 인증할 수 있음.단점1: state-ful(세션) 방식보다 ..
개발바닥 2사로에서 진행되는 CS 면접 스터디에 참가하게 되었습니다. 스터디 목적 리마인드 목적은 인턴 준비 면접 준비 두괄식으로 말하기 면접관이 질문했던 내용을 다시 말하며 답변 시작하기. (면접관 질문 리마인드 + 생각할 시간 창출..) 면접관의 의도가 이해가 되지 않는다면 의도에 관해 재질문하기. 애매한 용어는 사용하지 않기. CS 지식 습득 네트워크, DB, 운영체제, SQL 등 프레임워크 지식 습득? 이번에 참여한 스터디원 중 저를 제외한 모두가 JVM 개발자라 프레임워크보단 CS부분을 많이 얻어가려고합니다. 나만의 스터디 룰 본인이 맡은 부분에 대해서는, 이 부분 외에는 더이상 공부할 것이 없을 정도로 준비해 오기. 블로그에 작성할 수 있는 정도로 조사하기. 각 키워드별 예상 질문 뽑아오기. ..
Flow란?직역하여 흐름이라는 의미입니다. git+flow는 'git에서 제공하는 브랜칭 기능을 활용한 변경 이력 관리 전략'입니다.이 외에도 다음과 같은 전략이 있으므로 적용하고자 하는 팀 사이즈에 따라 아래 전략들도 고려해주세요.github flow: git flow보다 훨씬 단순한 전략gitlab flow: git보다는 단순하고 github flow보다는 복잡한 전략 Git Flow란?브랜치를 나누는 방법에 대한 분류 중 하나입니다. Git Flow에서의 특징은 브랜치를 5종류로 나뉩니다.main(master): 서비스을 직접 배포하는 역할을 하는 브랜치입니다.feature(기능): 각 기능 별 개발 브랜치입니다.develop(개발): feature에서 개발된 내용을 가지고 있는 브랜치입니다.re..