분석과탐구
-
PHP의 Fiber분석과탐구 2024. 4. 11. 04:14
개요 PHP는 멀티스레딩 지원이 빈약하다. pthread 같은 extension을 잠시 지원했으나 더 이상 지원을 하지 않는다. 한편, parallel란 익스텐션이 나와 멀티스레딩을 지원하려는 시도가 있었다. 그리고 활발하게 개발되다가 중단되었다. 멀티스레딩 지원이 빈약하고 또 개발 중단이 일어나는 이유를 추측해 본다면, 프로그래머가 그것을 필요로 하는 경우가 적기 때문이다. 즉, 수요가 없는 것이다. PHP는 C++, Java같은 일반적인 언어가 아니라 웹 페이지 전달을 목적으로 하기 때문이다. 일반적인 언어에선 처리 속도의 향상, 처리량의 향상을 이유로 멀티스레딩이 요구된다. PHP에선 그렇진 않다. 그런데도, PHP를 하다 보면 멀티스레드가 있으면 좋겠다 싶은 경우가 있다. 파일 입출력, 다른 서버..
-
Postman CLI기반 API 테스트 자동화분석과탐구 2024. 4. 9. 16:25
개요 Postman을 사용하여 개별 API 테스트를 하는 것은 널리 알려진 개발 방법이다. 그러나, 개별 API뿐만 아니라 여러 API를 CLI에서 일괄적으로 테스트할 수 있다는 사실은 그렇지 않다. 프로그래머가 버튼을 매번 누르는 것보다, Postman CLI을 기반으로 테스트를 자동화하여 효율적으로 개발을 할 수 있을 것이다. 이에 그 방법을 제시하고자 한다. Postman CLI Postman은 GUI기반으로 API를 테스트할 수 있다. 하지만, 자동화를 하기에 GUI는 부족한 점이 있다. 이에, Newman이라는 이름의 node.js 패키지가 나왔고, CLI 기반으로 테스트를 할 수 있었다. 현재, Postman CLI이라는 이름으로 공식적으로 CLI툴을 지원한다. Postman CLI를 이용하여..
-
스트리밍 서비스가 궁금하다분석과탐구 2023. 12. 16. 00:10
스트리밍 서비스가 궁금하다. 최근 트위치가 한국에서 철수했다. 관련 담화들을 보면서 몇 가지 키워드들을 발견했다. 망 사용료, 그리드 네트워크, 스트리밍 서비스 등등... 가벼운 주제가 하나도 없다. 기억을 더듬어보니 개인적으로 스트리밍과 관련된 뭔가를 다룬 적이 한 번도 없었다. 그래서 한 번 알아봤다. 실시간 중계 서비스 분석 스트리밍 서비스도 클라이언트가 서버에 비디오 파일을 요청하고 서버가 파일을 응답하는 구조일 것이다. 서버는 나중에 보기로 하고 보통의 클라이언트인 브라우저에선 어떻게 처리할까? 브라우저에선 HTML5의 video 태그를 이용하여 브라우저에서 비디오를 보여줄 수 있다. 평소에 보던 스포티비에서 실시간 중계를 하길래 보다가 캡처한 것의 일부이다. html을 보니 video 태그를 ..
-
클라우드 트래픽 비용 비교분석과탐구 2023. 11. 29. 20:52
서론 트래픽 비용을 제대로 분석하려면 트래픽당 과금 구조 뿐만 아니라 서버, 디스크, 문제 해결 서비스 등의 가격까지 모두 고려해야 한다. 왜냐하면 트래픽 비용을 다른 서비스 가격에 녹여내서 트래픽 비용은 싼데 다른 서비스가 비싸지거나 그 반대도 가능하기 때문이다. 하지만, 모두 고려할 에너지가 없는 관계로, 관심이 가는 선에서 서버 대여와 트래픽 비용만 따져보려고 한다. 트래픽 계산 트래픽은 사용자가 웹 서비스에 보내는 패킷량과 웹 서비스로부터 받은 패킷양(데이터)의 총합이다. 클라우드 서비스 용어로 다시 말하면, 인바운드(사용자ㅡ>서버)와 아웃바운드(서버ㅡ>사용자) 트래픽이라고 할 수 있다. 인바운드는 초당 트래픽 상한을 두고 무료로 제공하되, 기준을 넘으면 따로 계약하는 것으로 보인다(링크). 아웃..
-
객체지향 프로그래밍분석과탐구 2023. 10. 22. 00:42
객체지향 프로그래밍객체지향 프로그래밍을 이야기하다 보면 개체지향 프로그래밍이란 용어도 보게 된다. 개체는 시스템 안에서 협력하는 개념에 가깝고, 객체는 독립성을 가진 대상을 가리키는 쪽에 가깝다. 객체지향의 object는 개념상으론 개체 쪽에 가까운 것으로 보이는데, 개체보단 객체라는 단어가 주로 쓰인다. MSDN에선 개체지향 프로그래밍으로 명시한다. 일단, 객체가 좀 더 널리 쓰이니, 객체로 하겠다. 객체지향 프로그래밍에 대하여 글을 쓴 계기는 객체지향의 사실과 오해라는 책을 읽고 생각을 정리하고 싶어서다. 여태까지의 경험과 책의 내용을 종합하여, 객체지향을 정리할 것이다.객체지향과 절차지향객체지향 프로그래밍과 절차지향 프로그래밍의 차이점은 무엇인가. 그것은 코드 진행의 최소 단위를 객체로 보면 객체지..
-
JWT와 세션분석과탐구 2023. 7. 22. 09:55
JWTJWT는 토큰이다. 토큰은 일련의 문자열을 의미한다. JWT는 일련의 문자열을 서버와 클라이언트가 주고받아 서로 통신하기 위한 도구이다. JWT는 '헤더.페이로드.사인'으로 이루어진 문자열이다. 헤더, 페이로드는 json으로 이루어져 있고, 사인은 헤더와 페이로드를 시크릿키로 암호화한 값이다. 클라이언트와 서버가 주고받을 때 base64로 인코딩 되어 전송한다. 누군가 JWT를 얻었다면, base64 디코딩을 통하여 간단히 내용을 확인할 수 있다. 그래서 JWT 안에 중요한 데이터를 보관하는 것은 좋은 방향이 아니다. JWT는 위조방지 기능이 있는 토큰이다. 서버가 가진 시크릿키를 이용하여 헤더와 페이로드를 암호화한 결과를 사인에 저장하기 때문이다. 사인의 존재로 인해서 위조가 어려운 것이다. 누군..
-
락이 필요한 경우 어떻게 처리할까 고민분석과탐구 2023. 6. 9. 07:03
락이 필요한 경우 어떻게 처리할까 고민 데이터베이스에서 락을 쓰면 실수할 여지가 꽤 있는데, 문제가 발생했을 때 데드락 같이 여파가 큰 문제가 발생한다. 격리 수준에 따른 락의 차이를 고려하면서, 데드락을 방지하기 위해 테이블의 접근 순서는 이래야 하는 등의 일은 너무나도 실수가 발생할 여지가 크다. 그런데, 락은 필요하다. 상품의 재고, 티켓팅, 주문 처리 등등 모두 한 번에 하나의 실행흐름이 접근해서 처리해야 하기 때문이다. 그래서 어떻게 처리하나 찾아보니, 인프런에서 좋은 답변을 찾았다. 인프런의 질문답변 게시판에서 얻은 힌트 강사님 락관련 질문이 있습니다. 요약하자면 쇼핑몰 같은 시스템에서 락이 필요해 보이는데, 어떻게 해야 하냐는 것이다. 답변을 일부 발췌하였다. 락을 거는 것은 요즘 같은 실시..
-
도커로 MySQL 다루기분석과탐구 2023. 6. 9. 02:50
도커로 MySQL 다루기 MySQL을 사용할 때, MySQL을 따로 설치하지 않고 도커 이미지로 가져와 컨테이너로 돌려서 사용하곤 했다. 도커 데스크탑과 컴포즈로 인해서 연관된 프로그램들을 하나로 묶는다는 개념이 좋았기 때문이다. 설치와 설정의 반복에서 벗어나 docker-compose.yml파일을 하나 잘만들어두면 여기저기 쓸 수 있어서 좋기도 했다. 그래서, 사용하면서 그때 그때 처리하고 넘어갔던 것들을 정리해보려고 한다. 예제 링크 설정파일 변경 mysql의 설정파일은 /etc/my.cnf에서 다룬다. 설저을 바꾸기 위해서 my.cnf를 직접 수정하는 식으로 접근하면, 적어도 컨테이너에서는 여러 에러가 발생한다. 에러를 해결하기 위해 이런저런 명령어를 쓰는 것도 나쁘진 않지만, my.cnf파일을 보..