본문 바로가기

개발자9

Short Polling vs Long Polling '폴링(Polling)'이란 클라이언트가 서버에게 주기적으로 새로운 데이터나 이벤트가 있는지 주기적으로 확인하는 요청을 전송하는 것을 의미한다. HTTP 요청은 클라이언트가 요청을 보내고 서버가 응답을 주는 형태다. 하지만 클라이언트가 원하는 정보가 아직 서버에 없는 경우 바로 응답으로 돌려주지 못 할 수 있는데 이럴 때 폴링 기법을 이용해서 응답을 기다릴 수 있다. Short Polling 짧은 폴링(Short Polling)은 가장 간단하게 생각할 수 있는 폴링 방식이다. 클라이언트는 서버에게 이벤트나 데이터를 달라는 요청(Request)을 보낸다. 요청을 받은 서버는 데이터나 이벤트가 있으면 담아서 응답으로 보내준다. 만약 데이터나 이벤트가 없으면 빈 응답을 바로 리턴해준다. 빈 응답을 받은 클라이.. 2023. 12. 29.
자원의 프로비전(Provision) - 씬 프로비전(Thin Provision) vs 팻 프로비전 (Fat provision) 프로비전(Provision), 프로비저닝 (Provisioning) 클라우드 컴퓨팅이나 가상화 관련된 테크 문서를 보면 '프로비전(Provision)'이나 '프로비저닝(Provisioning)'이라는 단어를 찾아볼 수 있다. 프로비전(Provision)이란 '준비, 대비'라는 뜻의 영단어로 전산에서는 필요한 컴퓨팅 리소스들을 필요한 곳에 배치하거나 사용되지 않는 유휴 자원들을 다시 회수하는 작업들을 말한다. 프로비저닝의 예를 들어보자. 16TB 정도 용량을 사용하는 서버 컴퓨터에 저장할 데이터의 양이 늘어나서 추가로 16TB 디스크 공간을 증설했다. 이후 사용되지 않는 데이터가 정리되거나 압축 등의 작업을 통해 사용 용량이 다시 16TB로 줄어들었다고 하자. 이 경우 사용되지 않는 16TB 공간을 다시 .. 2023. 12. 12.
REST API란 무엇인가? REST는 REpresentational State Transfer의 약자로 2000년도 Roy Fielding의 박사학위 논문에서 최초로 소개되었다. Roy Fielding은 HTTP의 주요 저자중 한사람으로 REST API는 웹 아키텍처의 우수성을 최대한 활용하기 위해 만들어진 API다. 요즘은 웹 서비스뿐 아니라 여러 컴포넌트들로 구성되어 있는 서비스들을 하나로 묶어야 하는 경우에도 많이 사용된다. 따라서 REST API에 대해 잘 알고 있으면 도움이 많이 된다. REST란? REST를 다음과 같이 정의할 수 있다. HTTP URI로 잘 표현된 리소스에 대한 행위를 HTTP Method로 정의한다. 리소스의 내용은 json, xml, yaml 등의 다양한 표현 언어로 정의된다. '무엇을 어떻게 한다.. 2023. 12. 9.
소프트웨어 개발 3대 원칙 : KISS, YAGNI, DRY 고품질의 소프트웨어를 개발하기 위한 다양한 방법론들이 존재한다. 소프트웨어 공학과 관련된 책을 읽다보면 자주 언급되는 원칙들이 있다. 대표적으로 KISS, YAGNI, DRY 원칙이 있다. KISS - Keep It Simple Stupid! KISS 원칙은 "Keep It Simple Stupid!" 혹은 "Keep It Short and Simple", "Keep It Small and Simple"의 앞글자를 따서 만든 약어다. 설명하자면 소프트웨어의 설계나 코딩 작업에서 되도록 간단하고 단순하게 결과물을 만드는게 좋다는 의미다. 설계나 코드가 불필요하게 장황하거나 복잡해지지 않도록 주의하라는 의미다. 설계나 코드가 복잡하고 장황하다면 비즈니스 로직을 이해하기 어렵다. 그렇게 되면 주석도 덕지덕지 .. 2023. 12. 7.
브룩스의 법칙(Brooks' Law) 브룩스의 법칙(Brooks' Law)은 프레더릭 브룩스가 자신의 책인 (The Mythical Man-Month)에서 언급한 소프트웨어 개발과 관련된 법칙이다. 지체되는 소프트웨어 개발 프로젝트에 인력을 더하는 것은 개발일정을 더 늦출 뿐이다. - 맨먼스 미신, 페레더릭 브룩스 맨먼스 (Man/Month) 소프트웨어 프로젝트를 진행하면서 '맨먼스(Man/Month)'라는 용어를 자주 사용하게 된다. 맨먼스는 1명의 개발자가 1개월동안 작업할 수 있는 일의 양을 하나의 단위로 추상화시켜 놓은 것이다. 흔히 MM이라고 줄여서 표현한다. 맨먼스 방식은 소프트웨어 프로젝트를 진행하기 위한 인력 리소스를 파악하기위해 주로 사용된다. 1MM은 1명의 개발자가 1개월동안 작업하는 일의 단위다. 2MM은 1명의 개발자.. 2023. 12. 6.
페어 프로그래밍(Pair Programming)이란? 애자일 소프트웨어 개발 방법론 중 하나로 '페어 프로그래밍(Pair Programming)'이라는 것이 있다. 페어 프로그래밍은 두 명의 개발자가 한 컴퓨터를 가지고 프로그램을 설계하고, 알고리즘을 작성, 코드를 작성 밑 테스트를 진행하는 개발방식이다. 동료 프로그래밍, 쌍 프로그래밍 혹은 짝 프로그래밍이라고도 부른다. 두 프로그래머 중 한 명이 '네비게이터(Navigator)' 역할을 수행하여 전략을 제시하고, '드라이버(Driver)'가 실제 코드를 작성하게 된다. 그리고 이 역할은 각자 번갈아가며 수행하게 된다. 이름에서 알 수 있듯이 페어프로그래밍은 운전으로 생각할 수 있다. 자동차를 운전하는 사람을 드라이버라고 말하며, 조수석에 앉아 지도를 보고 방향을 알려주는 사람을 네비게이터라고 할 수 있다.. 2023. 12. 5.
구글이 말하는 좋은 매니저의 조건 (Managers Matter after All) 개발자들이 모인 조직에서는 관리자의 역할과 중요성에 대해 회의적이기 쉽다. 대부분 관리자는 실제 제품의 품질이나 기술에 대한 내용보다는 프로젝트의 진행과 결과물, 보고서 등에만 관심있어 보인다. 구글 역시 개발자 중심의 회사로 매니저의 역할에 대해 회의적이었다. 매니저의 역할이 중요하지 않음을 실험적으로 증명하고자 했는데, 결과는 정반대였다. 개발 조직이 유연하게 흘러갈 수 있는데에 매니저의 역할이 굉장히 크다는 것이다. 구글은 "훌륭한 매니저와 함께하는 팀은 더 행복하고 생산적이다"라는 결론을 내렸다. 그렇다면 훌륭한 매니저의 조건은 뭘까? Abel Avram이 쓴 'Google: Managers Matter after All'에서는 8가지를 들고 있다. They are good coaches (좋은 .. 2023. 12. 4.
오픈소스 라이센스 총 정리 (GPL, AGP, SSPL, LGPL, MIT, BSD, Apache, JSON) 오픈소스 소프트웨어란 소프트웨어의 저작권 소유자가 소스코드를 자유롭게 사용하고 변경, 배포 할 수 있도록 모두에게 공개한 소프트웨어를 말한다. 다만 오픈소스에는 라이센스 조건이 붙는 경우가 많다. 모두가 자유롭게 사용하고 변경, 배포할 수 있지만 지켜야 할 사항이 존재하는 것이다. 오픈소스 라이센스를 제대로 이해하지 않고 사용할 경우 법적 소송에 휘말려 금전적 피해를 입게 될 가능성도 있다. 따라서 오픈소스를 도입해 서비스를 개발하기 전에 도입하려는 오픈소스의 라이센스 조건을 제대로 알고 있어야 한다. 목차 저작권(Copyright) 저작권(Copyright)이란 창작물의 원작자가 소유한 법적인 권리를 말한다. 창작물을 만들기 위해 들어간 원작자의 노력과 창작물에 대한 저자의 가치를 보호하기 위해 존재하.. 2023. 5. 2.
⟪커리어 스킬⟫에서 추천하는 책들 코로나가 전세계를 덮치기 직전, 작년말에 베트남 나트랑에서 휴가를 보냈었다. 휴가를 보내면서 ⟪커리어 스킬⟫이라는 책을 읽었다. 프로그래머로서 어떻게 커리어를 쌓아가야하는지 멘토가 멘티에게 조언을 하듯이 현실적인 이야기들을 풀어낸 책이었다. 이 책을 읽었던 나트랑이 1년이 다되어가는 지금까지 마지막 해외여행이 될줄은 몰랐었다. (참고로 마지막에 노로 바이러스에 걸려서 고생했었다..) ⟪커리어 스킬⟫에서는 개발과 관련된 책과 개발에 도움이 되는 비개발 서적을 추천해줬는데, 그 내용을 어딘가에 적어뒀다가 최근 메모를 정리하면서 발견하게 되었다. 블로그에 포스트로 적어놓고, 하나하나 읽어가면서 스터디 한 내용들을 포스트로 적어두고, 독서기록을 남기는 것을 남은 올해와 내년의 목표로 잡아야겠다. ⟪커리어 스킬⟫.. 2020. 10. 30.