전체 글
-
[Network] WebSocket공부/컴퓨터 네트워크 2024. 6. 14. 16:22
1. 웹소켓에 대한 간단한 정보인터넷에 널리 알려진 내용부터 잠깐 살펴보고 가자. 먼저 웹소켓이 없었을 때부터 이야기할 예정이라 웹소켓만의 특징을 먼저 알고 있는 상태에서 읽는게 도움이 된다. - HTTP와 같은 Application 계층의 프로토콜이다.- 데이터를 양방향으로 주고 받을 수 있다. 그래서 서버가 먼저 데이터를 보낼 수 있다.- HTTP / HTTPS에서 Upgrade, Connection 헤더를 사용해 웹소켓을 사용할 수 있다. 이번 포스팅은 소켓에 대해 알고 있어어한다. 아래 글을 보고 먼저 소켓에 대해 이해를 한 다음 글을 보는게 좋다.https://hello70825.tistory.com/598 [Network, OS] Socket, I/O Multiplexing, Event Lo..
-
[Network, OS] Socket, I/O Multiplexing, Event Loop공부/운영체제(OS) 2024. 6. 7. 16:57
Socket → I/O Multiplexing → Event Loop 순서로 공부한 내용이다.따로따로 내용을 분리하기엔 서로 연결된 내용이 많아서 한 번에 작성했다. 0. UNIX 철학Everything is a file 객체지향에서 "모든 것은 객체로 이루어져 있다"처럼 UNIX 운영체제의 철학은 "모든 것은 파일로 이루어져 있다"이다.소켓이든, 프로그램이든, 파이프라인이든 모든게 파일로 이루어져 있다는 것이다.이 내용을 기억해두면 좋은게 '추상적 개념'이 아닌 '파일'이라는 관점으로 보아야 수월하게 이해하는데 도움이 된다. 1. 소켓이란?[1] 개념소켓은 운영체제가 제공하는 인터페이스로 애플리케이션 계층의 프로그램이 네트워크 서비스를 사용할 수 있게하는 역할을 한다. TCP/IP 4계층으로 이..
-
[Network] HTTPS공부/컴퓨터 네트워크 2024. 5. 21. 15:47
1. HTTP와 HTTPSHTTP와 HTTPS의 큰 차이점은 패킷이 암호화되냐, 암호화되지 않냐의 차이이다.HTTP는 80번 포트번호로 패킷을 주고 받고, HTTPS는 443 포트번호로 모든 통신을 진행하게 된다.아래 와이어샤크를 통해 패킷을 확인해보자 HTTP 패킷HTTPS 패킷 큰 흐름의 HTTP/HTTPS 트랜잭션 HTTP는 80번 포트를 통해 3-way handshake를 통해 연결을 수립하고, 통신을 하다가 서로 주고 받을 패킷이 없으면 4-way handshake를 통해 통신을 종료한다.HTTPS는 살짝 다르게 3-way handshake를 한 이후 SSL handshake를 진행하고, 이후 통신을 끊을 때에는 SSL 닫힘 통지가 먼저 일어나는데, 이때 클라이언트와 서버가 close_noti..
-
[Concurrency] Actor Model백엔드/Java 2024. 5. 7. 16:17
* 용어 통일을 위해 Actor, 액터 혼용 대신 Actor로만 사용했습니다. 1. 서론동시성 프로그래밍 마지막 포스팅으로 Actor 모델이다. 지금까지 내용을 정리하면 다음과 같다.Compare and Swap(CAS)단일 값에 대해 원자성을 보장해준다. 하지만 "단일 값"만이다.Software Transactional Memory(STM)트랜잭션을 진행하는 동안 다른 메모리 공간에서 공유 자원에 대한 연산을 수행한 뒤 커밋하거나 롤백하여 적용한다. Actor 모델이 대두된 시기는 역시 STM과 똑같이 멀티코어 프로그래밍으로 인해 화두가 되었다. 다만 STM과는 다르게 처음 Actor 모델을 제안한건 1973년이고, 프로그래밍 언어로 만들어진건 1986년 Erlang 언어로 Actor 모델을 기반으로..
-
[Concurrency] Software Transactional Memory (Beautiful concurrency)백엔드/Java 2024. 4. 29. 15:11
1. 서론작년엔 동시성 문제에 synchronized, 비관적 락, 낙관적 락에 대해서만 알았다가 최근에 CAS 알고리즘에 대해 알게 되었다. 이걸 기점으로 Lock-Free에 대해 더 공부하고 있다가 STM을 발견했다. 이번에 중점적으로 참고한 내용은 2007년 마이크로소프트에서 Simon Peyton Jones라는 사람이 발표한 논문이다. 내용은 Haskell 언어를 통해 어떻게 효율적인 STM을 구현할 수 있는지에 대한 내용이다.(https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/beautiful.pdf) 검색해보니 STM이라는 개념은 90년대에 있었지만, 2005년부터 인텔과 암드 주도하에 싱글 프로세스에서 멀티 프로세스로 넘..
-
[Java, Concurrency] Compare and Swap 알고리즘 (CAS)백엔드/Java 2024. 4. 14. 07:46
HashMap과 ConcurrentHashMap 차이점에 대해 공부하다가 ConcurrentHashMap의 코드를 확인해보니 Segment는 Java 8 부터는 사용되지 않아 하위호환성을 위해 남겨둔 것을 발견했다. 그러면 어떻게 안전하게 동시성 처리를 하는지 확인해보니 synchronized, 버켓(노드) 락, CAS 알고리즘을 사용하는데, CAS 알고리즘은 처음 들어봐서 정리하게 됐다. 1. synchronizedCAS 알고리즘에 대해 설명하기 전에 먼저 synchronized에 대해 알고 있어야한다.자바의 락은 모니터 개념을 사용하고 있는데, 원하는 범위만큼 하나의 스레드만 락을 획득할 수 있는 방법이다. 인스턴스의 메서드에 synchronized를 적용하면 인스턴스 메서드에 락이 걸리고, syn..
-
[Spring, JPA] 50% 확률로 통과하는 LocalDateTime 테스트 코드 버그 수정하기백엔드/Spring 2024. 4. 4. 10:11
우테코 프로젝트에 슈뢰딩거의 테스트가 1개 있다. 운이 좋으면 50% 확률로 테스트에 성공하고, 운이 나쁘면 50% 확률로 테스트가 실패한다. 신기하게도 로컬에서는 단 한 번도 테스트가 실패한 적이 없었고, 서비스할 때도 전혀 문제 없었는데, Github Actions에서만 저렇게 빈번하게 실패한다. 1. 데이터 조회 방식 에러가 발생하는 곳은 최신순으로 정렬한 리뷰를 검증하는 테스트 코드에서 나오게 된다. 쿼리문이 길어서 where절만 가지고 왔다. 최신순으로 정렬한 리뷰는 다음 조건에 부합하는 데이터들을 가져오게 된다. 예시를 들어서 설명해보면, 만약 3번 상품에서 가장 마지막에 데이터로 보내준 리뷰가 6번 리뷰라고 가정해보자. 이때 최신순으로 정렬해서 보여줄 경우 다음 페이지는 6번 리뷰보다 더 일..
-
[후기] 소프트웨어 마에스트로 15기 최종 합격 후기후기/활동 후기 2024. 3. 25. 11:50
1. 서류 작성[지원 이유]우테코에서 편의점 음식 리뷰라는 어찌보면 흔한 소재의 프로젝트를 진행했었다.이때 크루들과 같이 인스타그램 광고도 해보고, 카드 뉴스도 만들고, 당장 홍보할 수 있는 모든 곳에 홍보를 진행하니까 사람들이 많이 들어왔었다. 사용자들이 점점 늘어나더니 DAU 300 이상이 찍힌 날도 있었다.이를 통해 어느 주제의 프로젝트든 광고/홍보를 잘 진행하면 성공적으로 서비스를 운영할 수 있지 않을까?라는 생각이 많이 들었다. 그래서 이와 관련된 지원을 받을 수 있는 소마에 지원하게 되었다. [자소서 문항]작년에 자소서를 미리 써뒀는데, 이번에 항목이 많이 줄어들었다.내용 반절이 쓸모 없어져 버렸고... 똑같은 문항은 최신 버전에 맞게 수정해서 작성했다.하고 싶은 프로젝트는 내가 해온 활동과 ..