기억을 더듬어서 CPU 스케쥴링이란건 뭘까? 내 기억으로는 락을 학습할때 락 해제를 도와주는 그런 역할로 나왔던걸로 기억한다.그리고 프로세스 동기화 같은 경우 일반적으로 프로세스는 독립적인 공간이 존재하기 때문에 동기화는 불가능하다. 하지만 이것을 가능하게 해주는 것이 IPC라고 알고 있다. 물론 이러한 사실들이 잘못된 내용들이 많다고 생각한다. 방금 GPT를 돌려보니 대부분 내가 한말이 틀렸다고 한다. 그렇다면 다시 잡는게 좋지 않을까 생각이 든다. 듬성듬성한 기억을 더듬어서 프로세스부터 스레드까지 다시 한번더 정리해보자.프로세스 상태프로세스는 독립된 메모리 공간이라고 했습니다. 그리고 다음과 같은 상태가 있다고 했습니다. 프로세스가 새로 생긴 상태, 그 프로세스가 동작하는 상태, 프로세스가 죽은 좀비..
전 회사에서 노드를 스프링을 바꿔야 하는 과제를 받았었다. 문제가 있었다. 당시 그 프로젝트는 SSO가 적용되어있다. SSO는 간단히 말해 여러 서비스를 통합해서 관리를 할 수 있어야 했다.그래서 스프링 시큐리티를 적용하기로했다.하지만 문제가 발생했다. 내가 스프링 시큐리티를 모른다는 사실이었다. 그래서 같이 일하시는 분이랑 시큐리티에 대해 같이 학습을 하였다.시간이 지나고 나니 스프링 시큐리티가 어떤 프로젝트인지 전혀 감이 잡히지않아 이렇게 다시 공부하기로 마음먹었다.|일단 내가 제일 먼저 알아야 하는건 본질에 대해 알아야 한다고 생각한다. 스프링 시큐리티가 과연 뭘까? 스프링은 이걸로 무엇을 하고 싶어하는걸까? 사실 스프링 시큐리티를 적용하지 않아도 인가며 인증이고 전부 가능하다. 스프링 시큐리티를 ..
[복습]지금까지 네트워크를 학습을 하였다. 그래서 그것들을 간단하게 복습하고 이번에는 어떤것을 대략적으로 학습할 수 있을지 생각해보자우리가 네트워크에서 가장먼저 학습하는 부분은 OSI 7계층이다. 7계층 같은 경우는 이론적으로 위대하신 선배님들이 정리해놓은것이라고 합니다. 하지만 문제는 7계층 같은 경우, 데이터의 흐름 신호를 설명하기에는 부족했다. 그러니까 실무적인 관점이 아니라는 뜻이라고 생각하면 됩니다. 그래서 만든 TCP/IP계층이 등장헀습니다. TCP/IP도 전반적으로 OSI와 다를것은 없습니다. 다만 여기서 중점적으로 봐야 하는 부분은 계층 신호입니다. 계층은 물리 -> 데이터 링크 -> 네트워크 -> 전송 -> 응용계층으로 되어있습니다. 신호란 전기신호입니다. 결국 모든 신호는 0과 1로 ..
WEB에는 대 프로토콜 HTTP가 있다. HTTP에 대해 간략히 복습하자면 HTTP는 비연결 지향 프로토콜이다. 클라이언트의 요청(Request)이 서버로 전송되고 응답(Response)이 완료되면 연결이 즉시 종료된다. 이러한 특성 때문에 요청 간의 상태가 유지되지 않으며, 한 번 전송된 메시지는 서버나 클라이언트 어느 쪽에서도 자동으로 저장되지 않는다. 하지만 모든 메시지가 즉시 연결이 종료되면 안될 수 있다. 예를 들어, 클라이언트가 보낸 메시지를 지속적으로 조회하거나,서버가 실시간으로 상태 변화를 전달해야 하는 상황이라면HTTP의 비연결·비상태 특성만으로는 한계가 발생한다. 이러한 문제를 해결하기 위해 다양한 방식이 등장했다.Long Polling, Server-Sent Events(SSE), 그..
1주차에 UDP TCP를 학습을 하고 2주차에는 HTTP를 학습하였습니다. OSI로 따지든 TCP/IP기준으로 따지든 둘다 데이터라는 것을 통신하게 되어집니다. 당연한 얘기겠지만, 계층이 올라가면서 이 안에서 동작하는 전기 신호의 이름은 변경이 되었습니다. 어찌보면 그냥 신호일뿐인데 어째서 이것들을 나누었을까요? 이건 제 생각인데 계층 마다 분리를 하고 싶었던게 아닌가 싶습니다. 이거는 이러니까 이거지.. 개인적으로 "장비" 입장에서는 신호를 나타나내는 용어가 그렇게 중요할까요? 아마 사람에게 중요한 일일 겁니다. 그래야 구분짓기 쉬우니까 그 당시 인간들은 이런 행위를 굉장히 즐긴거 같습니다. 계층 나누고 그것을 부리는 명칭을 달리하는 것말이죠. 얘네를 왜 학습해야 하지?가만 생각해보면 이것들을 왜 알아..
오픈 채팅방에커리어 상담글이 올라왔다. 현재 나는 4년째 백엔드 개발자고 8개월째 이직 준비중에 있다. 또한 도메인변경을 원했기 때문에 커리어 상담을 신청하게 되었다. 어찌 저찌 신청서를 제출하고 기달렸다. 10월 26일 일요일 7시에 상담해준다는 연락을 메일로 받았다. 사실 토욜이었는데 취소되었고 일욜로 바뀌었지만 난 못봤다. 상담 시작간단하게 자기소개를 하고 어떤것을 지금 중점적으로 해야 하는지 설명해주셨다. 일단 나는 이커머스로 도메인 변경을 원했는데사실 이커머스에서 어떤일을 하는지 왜 그 도메인을 원하는지에 대해 구체적으로 고민하지 않았던거 같다. 단순히 생각했을때 고객들과 가장 밀접한 도메인이라고 생각만 했지 구체적으로 생각하지는 않은거 같다.기술같은 경우도 머릿속에 아른거리는 기술들만 있지 실..
이전 장에서 예고한것처럼 쿠키랑 세션에 대해 알아봅시다. HTTP에서 TLS이 추가되어서 보안이 증가된 형태인거는 이제 이해했는데 그렇다면, 인증쪽은 어떻게 처리를 해야 할까요? 아니 애초에 이게 왜 필요한건지 이해할 필요가 있을거 같습니다. 웹이나 앱등등 사용자를 등록하게 되어집니다. 등록을 하게 되면 로그인이라는걸 하게 되는데 그런 다음 어떻게 해야 할까? 쿠키나 세션 하물며 JWT토큰 조차 없다고 생각해보자 이거는 그냥 데이터에 불과할겁니다.. 그걸 통해 뭔가 액션을 취할 수 는 있겠는데 그걸 계속 유지를 시킬 수는 없습니다. 왜냐하면 HTTP는 알다시피 Stateless 비연결성 프로토콜입니다. 즉, 한 번 요청하고 응답이 끝나면 그 연결에 대한 기억은 완전히 사라집니다. 여기서 어라? HTTP는..
지난번에 TCP와 UDP를 학습하였습니다. 이제 이것을 발전시킨 기술 하나를 살펴볼 건데요. 그것은 바로 HTTP입니다.HTTP가 웹을 위한 프로토콜로 잘 알려져 있긴 하지만 HTTP에 대해 잘 알지 못하고 있습니다. 인터넷에 HTTP를 검색하면 많은 정보들이 나오긴 하지만 생각만큼 잘 와닿지 않았습니다. 1960년대에 HTTP라는 기술에 대한 설계가 시작이 되었고, 팀 버너스 리를 필투로 1989년에 HTTP가 개발이 되었다고 합니다. 어떻게 보면 중요한 내용일 수도 있겠지만, 생각해 보면 지금 말하고 있는 사실과 HTTP의 연관성을 짓지 못하는 경우가 많은 거 같습니다. 이러한 이유가 발생한 이유가 뭘까요? 단순히 암기를 하려고 했던 게 아닐까요? 이번에 제대로 HTTP를 빠개봅시다.HTTP는 어디에..
* 초안입니다. 배경TCP는 뭐고 UDP는 뭘까우리가 알기로는 TCP는 느리지만 신뢰성이 좋다고 하고, 그리고 UDP는 느리지만 신뢰성이 좋지 않는다고 한다.왜 그럴까?어떤 이유 때문에 TCP는 느릴까?TCP는 UDP보다 하는일이 굉장히 많다. 예를 들어, 신뢰성과 안정성을 보장하기 위해서는 기능이 많이 필요하다.다음은 TCP,UDP가 하는일은 다음과 같다고 한다.📡 TCP (이중 확인, 안정형)[연결 준비] → 3-way handshake[데이터 전송] → 패킷 전송 후 ACK 수신[손실 발생] → 재전송[혼잡 발생] → 전송 속도 감소[종료] → 4-way handshake로 세션 정리➡️ 신뢰성 높음, 하지만 왕복 지연(RTT)마다 제어 수행 → 상대적으로 느림⚡ UDP (던지고 잊기, 불안정형)..
학습 키워드Unit Test / Integration Test / E2E Test테스트 Pyramid테스트 커버리지 vs 유의미한 테스트유닛테스트라는건 뭘까?서비스단에서? 컨트롤단에서? 음 아무래도 상관없으려나유닛테스트는 단위테스트라고 하며그림을 보면 알수 있듯이 단위 테스트는 테스트 피라미드 바닥에 존재하며 굉장히 많은 수 가 있다는 것을 알 수 있습니다.이는 간단하게 작성이 되어진다는 뜻이 되어집니다.이전 포스트에서도 말했었지만 테스트코드는 굉장히 중요합니다. 그렇다는 이야기는 e2e를 하든 통합을 하든 유닛을 하든작성을 하는것이 좋습니다. 여기서 중요한 사실은 유닛테스트가 양이 제일 많다는 것입니다. 그렇다는건 유닛테스트를 중점으로 테스트코드를 짜야 된다는 뜻이 됩니다.그리고 그림에서 보면 알 수 ..