본문 바로가기

PM으로 성장하기/개발 공부30

Webhook, Push API, Callback API 어떤 방식으로 통신해야할지 이야기를 하면서 위 세가지 개념이 나왔다.물론 각기 다른 프로젝트에서 나온 이야기이지만 비개발자인 내 입장에서는 그게 그거인것 같아 Chapt GPT 에게 물어봤다.역시 친절하게 잘 알려준다..! --------------------------- 이벤트(event)이벤트 기반 시스템이란 특정 상황이나 조건이 발생했을 때 시스템이 이를 감지하고 이에 대응하는 방식을 말하며, 이벤트는 다음과 같은 상황이나 조건을 이야기 함:사용자의 동작: 사용자가 애플리케이션에서 버튼을 클릭하거나 특정 입력을 수행하는 등의 동작을 취할 때외부 시스템의 상태 변화: 외부 시스템이나 서비스의 상태가 변경될 때, 이를 감지하고 그에 따라 행동하는 것내부 프로세스의 상태 변화: 내부 프로세스나 데이터의 .. 2024. 5. 9.
웹훅(Webhook) 업무 리스트를 보다보니 뭔가 수정이 발생하면 그것을 알려주는 것이 필요하다는 요건을 확인했다. 웹훅이 어떤 것인지 서칭하여 아래와 같이 정리해보았다. 웹훅(Webhook) - 데이터가 변경되었을 때 실시간으로 알림을 받을 수 있는 기능(이벤트로 트리거 되어 데이터 전송) - 웹 서비스의 이벤트 데이터를 전달하는 HTTP 기반 콜백 함수 - 특정 이벤트가 발생하면 웹훅이 클라이언트에게 이벤트 데이터를 보냄 API Polling과 비교 - 일반적인 API는 클라이언트가 주기적으로 호출하여 이벤트가 발생했는지 확인함 - 웹훅은 이벤트가 발생할 때 서버가 직접 푸시 따라서 웹훅을 사용할 경우 API 호출 횟수가 현저히 감소하며, 실시간으로 데이터를 받을 수 있음 주의할 점 - 어떤 이유로 서비스가 중단되었다면 .. 2024. 3. 29.
이력관리: 시점이력 / 선분이력 조회 기간을 던져 해당 기간에 맞는 값을 리턴해오기 위해 논의하던 중, 상대 플랫폼은 '선분이력'으로 관리되고 있다는 이야기를 들었다.선분이력이 무엇인지 찾아보며 정리하였다. 1. 시점이력(점이력)- 변경시점만 관리하는 것 2. 선분이력- 시작일과 종료일을 같이 관리하는 것- 기간이 정해질 필요가 있는 데이터일 경우에 사용(예: 멤버십 기간) *참고데이터 이력관리 - 점이력, 선분이력 https://nooblette.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9D%B4%EB%A0%A5%EA%B4%80%EB%A6%AC-%EC%A0%90%EC%9D%B4%EB%A0%A5-%EC%84%A0%EB%B6%84%EC%9D%B4%EB%A0%A5[SQL] 이력 관리 - 점 .. 2024. 2. 5.
Redirect vs. Rewrite 페이지 이동을 시키는 요건을 논의하던 중 '리라이트'라는 단어를 처음 듣게 되었다. 리다이렉션은 그동안 많이 사용했었는데, 리라이트라는 것이 무엇인지 이번에 찾아보았다. 1. Redirect 사용자가 들어오면 새로운 경로로 안내하게 되는데, 그 새로운 경로 그대로 노출된다. 즉, 유저가 주소창의 주소 변화를 알 수 있다. - 예) exmaple.com/old-page 를 example.com/new-page로 보냄 사용예시: - 웹사이트를 새로운 도메인으로 이동시킬 경우, 이전 페이지에서 Redirect 설정 - 광고 캠페인을 운영할 경우, 클릭 및 전환 추적 - 사용자를 모바일 친화적인 웹사이트 버전으로 보내기, 사용자 위치에 따라 사이트의 지역 버전으로 보내기 등 2. Rewrite 내부적으로 요청을.. 2024. 2. 4.
인터페이스 구현(AJAX, REST, 인터페이스 검증) AJAX AJAX(Asynchronous Javascript And XML)는 자바스크립으를 사용하여 웹 서버-클라이언트를 비동기적으로 XML 데이터를 교환하는 기술을 말한다. 사용자에 의해 이벤트가 발생하면 이벤트 핸들러에 의해 자바스크립트가 호출된다. 자바스크립트는 브라우저가 가진 XMLHttpRequest 객체를 사용하여, 서버로 요청을 보내고 응답을 기다리지 않고 다른 것들을 처리한다. 서버는 XMLHttpRequest 객체를 가지고 요청을 처리하며 처리한 결과를 HTML, XML, JSON 등 형태로 브라우저에 전달한다. 이렇게 전달받은 데이터를 가지고 웹 페이지의 일부만을 갱신하는 자바스크립트를 호출하여 일부분만 다시 로딩되어 표시된다. REST REST(Representational Stat.. 2023. 9. 4.
연계 모듈 구현 연계 매커니즘은 두 가지 시스템으로 구성된다. 1. 송신 시스템: 데이터를 생성하여 전송한다 2. 수신 시스템: 송신 데이터를 수신하여 DB에 반영한다 이러한 연계 매커니즘을 구현하는 방식으로 크게 직접 연계와 간접 연계로 구분한다. 직접연계는 말 그대로 직접 연결하는 것이고, 간접연계는 중간에 매개체를 이용하여 연계한 것이다. 직접 연계 1. DB 링크: 데이터베이스에서 제공하는 DB 링크를 이용하는 것으로, 수신 시스템에서 DB 링크를 생성하고 송신 시스템에서는 DB 링크를 직접 참조한다. 2. DB 연결: 수신 시스템의 서버에서 송신시스템 DB로 연결하는 DB 커넥션 풀을 생성하고, 이 풀을 이용하여 연결한다. 3. API: 송신 시스템의 DB에서 데이터를 읽어서 제공한다. 어떤 특정 사이트에서 특.. 2023. 9. 4.
딥링크(URI Sheme, App Links, Universal Link, Intent Scheme), 디퍼드 딥링크 딥링크 딥링크는 사용자를 특정 앱으로 이동시켜서 특정 페이지로 이동시키는 기술이다. 딥링크는 자연스러운 동선을 만들고, 파편화된 고객여정을 매끄럽게 연결해주기 때문에 전환율과 리텐션에도 기여한다. 개발자는 웹에서 앱으로 이동시킬 때의 설정, 사용자 폰에 앱이 설치되다면 어디로 이동시킬지를 모두 구현한다. 딥링크의 종류 1. 커스텀 스킴(URI Scheme) 앱 스킴, 호스트, 패스, 파라미터로 구성되어 있다. 앱 스킴은 이동하고 싶은 앱을, 패스는 경로(페이지)를, 뜻한다. 커스텀 스킴은 서로 다른 앱이더라도 같은하지 못한다. 안드로이드는 어떤 앱을 열지 선택권을 주나, iOS는 가장 마지막에 설치한 앱이 자동으로 열린다. 이러한 스킴은 공개되어 있지 않아, 개발자들은 자신의 스킴이 고유한 값인지 확인할.. 2023. 7. 25.
테스트 케이스, 테스트 레벨, 테스트 유형, 결함 심각도별 분류 테스트 케이스 요구사항에 준수하는지 확인하기 위해 입력값, 실행 조건, 예상된 결과의 집합이다. 테스트 케이스에는 식별자(고유하게 식별하기 위한 항목 식별자), 테스트항목(테스트 모듈에 대한 간략한 내용), 입력명세(테스트 실행 시 입력할 값 및 조건), 출력명세(실행 시 기대되는 결과), 환경설정(테스트 수행 시의 환경), 특수절차요구(수행 시 요구되는 절차), 의존성을 포함한다. 테스트 레벨 - 단위 테스트: 사용자 요구사항에 대한 단위 모듈을 테스트한다. 자료구조, 인터페이스, 외부 I/O, 오류 처리 등을 테스트한다. - 통합 테스트: 단위 테스트를 통과한 컴포넌트의 인터페이스를 테스트한다. - 시스템 테스트: 개발 프로젝트 차원에서 정의된 전체 시스템에 대해 테스트한다. 기능 뿐 아니라 성능, .. 2023. 7. 2.
미들웨어 미들웨어 미들웨어란 프로토콜, 시스템 운영체제, 데이터베이스, 애플리케이션 등의 통신을 쉽고 안전하게 할 수 있도록 돕는 소프트웨어를 말한다. 미들웨어의 종류 1. DB 미들웨어 DB 솔루션 업체에서 제공하는 애플리케이션으로, DB 간 통신을 지원한다. JDBC가 대표적인데, JDBC란 Java에서 데이터베이스에 접속할 수 있도록 하는 자바 API를 말한다. 2. 원격 프로시저 호출 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 로컬처럼 호출하는 방식의 미들웨어이다. 원격 프로시저 호출을 이용하면 프로그래머는 함수가 실행 프로그램에 로컬 위치에 있든 원격 위치에 있든 동일한 코드를 이용할 수 있다. 3. 메시지 지향 미들웨어 메시지 기반의 비동기형 메시지 전달 미들웨어를 말한다. 서로 다른 분산 D.. 2023. 6. 27.
ETL(Extract, Transform, Load) ETL(Extract, Transform, Load) ETL은 추출, 변환, 로드의 약자로 다양한 소스로부터 데이터를 추출하고, 믿을 수 있는 리소스로 변환하며, 그 데이터를 로드하여 최종 사용자가 액세스할 수 있도록 처리하는 과정을 말한다. 추출(Extract) 소스 데이터베이스에서 관련 데이터를 추출한다. 추출을 수행하는 데에는 세 가지 방법이 있다. 레코드가 변경되면 시스템이 알려주거나, 특정 레코드(증분데이터)를 지정하여 주기적인 간격으로 추출을 하거나, 전체를 추출하는 방법이다. 변환(Transform) 추출한 원시 데이터를 사용할 수 있는 형태로, 운영 요구사항에 맞춰 변환한다. 오류를 제거하고 데이터 형식에 맞춰 정리하고, 중복을 제거하거나, 일관된 형식으로 변환하는 등의 과정이 있다. 로드.. 2023. 6. 14.
Proxy, Gateway Proxy 프록시 서버는 클라이언트의 요청을 받아 중계하는 서버이다. 프록시 서버는 웹사이트를 캐싱할 수 있다. 클라이언트로부터 요청된 자원들이 캐시에 저장되어, 재요청 시 서버 접속 없이도 프록시 서버를 통해 정보를 제공받을 수 있다. 또한 악성코드 등을 필터링하는 데에도 사용되는데, 리다이렉팅을 통해 웹사이트를 차단할 수 있다. Gateway 게이트웨이는 프록시와 비슷하게 클라이언트와 서버 사이의 중개 역할을 수행한다. 게이트웨이는 서로 다른 프로토콜을 통해 네트워크 통신이 가능하다. HTTP 트래픽을 다른 프로토콜로 변환하여 호환가능하도록 한다. 반면 프록시 서버에서와 같이 필터링 역할은 수행하지 않는다. 참고자료 Difference between a Proxy Server and a Gateway.. 2023. 6. 14.
콜백(callback) 어느 프로젝트 문서를 보다가 콜백 API 를 정의한 것을 보았다. 문맥 상 추측해보면.. 언제 발생할지 모르는 어떤 이벤트가 상대측에서 발생하면 상대측에서 역으로 우리 쪽으로 이런 이벤트가 발생했다고 알려주는 것 같았다. 우리는 이 이벤트가 발생되었다는 것을 인지하게 되면, 우리 쪽에서 필요한 추가적인 작업을 수행한다. 아래는 참고자료를 읽고 작성해보았다. callback 일반적으로 개발자는 필요한 시점에 특정 기능을 호출하는 방식으로 개발한다. 하지만 반대로, 함수의 호출을 받아야하는 경우가 있다. 사용자가 호출 시점을 결정하는 것이 아니라, 시스템 입장에서 필요한 시점에 호출을 해야하는 경우이다. 특정 이벤트가 발생하기 전에는 개발자도 사용자도 언제 발생할지 모르는 상황이 있다면, 이벤트가 발생될 때.. 2023. 6. 8.
SASS, SCSS 마크업 부서에서 SASS, SCSS 라는 용어를 사용하고 있어 어떤 것인지 궁금하여 서칭해보게 되었다. SASS, SCSS SASS, SCSS는 CSS를 더 편리하게 사용할 수 있도록 지원하는 스크립트 언어이다. SASS, SCSS는 직접 동작되는 것이 아니다. SASS, SCSS가 제공하는 문법을 바탕으로 코드를 작성한 이후, 이를 컴파일하여 CSS 파일을 만들어 사용한다. 즉, SASS와 SCSS는 CSS를 효율적으로 만들어내기 위한 도구이다. CSS는 작업이 커지고 코드가 많아질수록 불편함이 있다. CSS는 선택자를 만들 때 매번 부모 요소 선택자를 만들어야 하고, 구문이 없어 중복되는 코드가 많다. 이 때문에 유지보수가 불편하다는 단점이 많다. 반면 SASS(SCSS)는 CSS를 구조화하여 표현할.. 2023. 6. 8.
[컴과] 컴퓨터보안: 목적, 암호, 인증, 전자서명, 해시함수, 보안시스템, 분야별 보안 컴퓨터 보안의 목적 컴퓨터 보안이란, 컴퓨팅 환경에서의 정보를 보호하는 것을 말한다. 정보보호는 아래와 같은 목표를 갖는다. - 기밀성: 허락되지 않은 사람은 정보의 내용을 알 수 없어야 한다 - 무결성: 허락되지 않은 사람은 정보를 임의로 수정할 수 없다 (수정이 된다면 누가 수정했는지 알 수 있어야 한다) - 가용성: 허락된 사람은 정보에 접근할 수 있도록 보장한다 - 부인 방지: 정보를 보냈거나 받았을 경우 해당 사실을 부인하지 못하도록 한다 - 인증: 정보, 사용자 등의 실체가 실제로 맞는 실체인지를 확인할 수 있다 - 접근제어: 정보에 대해 허락된 부분만 접근할 수 있으며, 그 외에는 접근할 수 없다 암호 암호란 두 사람이 정보를 주고 받더라도 제 3자는 정보의 내용을 알 수 없도록 하는 기술을.. 2023. 6. 7.
[컴과] HTML, CSS, Javascript HTML 구성 HTML은 웹페이지의 구조와 내용을 정의한 것으로, 다양한 요소(명령어)의 집합이다. 보통은 와 같이 시작태그로 시작되고, 처럼 종료태그로 마무리한다. 예외가 있기도 한데, 처럼 시작태그 안에는 속성이 들어가기도 한다. 속성은 추가적인 정보를 제공하여 명령어를 더 구체화시키는 것을 말하며, 공백으로 구분한다. , 처럼 종료태그가 없는 경우도 있다. 기본 구조 문서의 본문 내용 1. 문서유형을 선언한다 2. ... HTML 문서의 시작과 끝을 알려준다 3. 웹문서에 대한 메타 정보를 포함한다. 화면에는 표시되지 않는다. 주로 사용되는 메타정보는 다음과 같다. 메타 정보 설명 title 브라우저 상단, 즐겨찾기 제목, 검색엔진의 결과 페이지 제목으로 사용 link CSS 파일을 가져와 문서에 .. 2023. 5. 28.
APM 툴, Pinpoint 개발문서를 보다가 pinpoint에 대한 내용을 보게 되었다. 또 이전에 개발자와 API에 대해 이야기할 때, 잠시 확인해보겠다며 pinpoint를 여는 것을 봤었다. 어떤 툴인지 궁금하여 찾아보게 되었고, APM 툴 중 하나라는 것을 알게 되었다. 이전 회사에서는 인터맥스를 사용했었는데, Pinpoint와 같은 역할을 한다는 것을 지금에서야 깨닫게 되었다. (역시 궁금한 것이 생기면 미루지 말아야 하나보다..) APM Application Performance Monitoring의 약자로, 애플리케이션의 성능을 모니터링하는 것을 말한다. 기업에서는 APM 도구를 사용하여 애플리케이션의 성능에 대해 실시간 데이터를 얻고, 여러 개발팀에서 문제를 파악하고 해결하는 데 도움을 준다. APM은 CPU 사용량,.. 2023. 5. 23.
시퀀스 다이어그램 시퀀스 다이어그램은 시스템의 구성요소들이 어떻게 상호작용하는지를 나타낸 것이다. 객체들이 시간의 흐름과 순서에 따라 어떻게 동작하는지 표현한다. 때문에 시스템이 어떤 시나리오로 움직이는지를 확인할 수 있다. 구성요소는 아래와 같다. 1. 객체와 생명선 객체는 사각형으로 표시되어 위에서 아래로 점선 형태의 생명선이 연결된다. 생명선의 길이는 시간을 의미하지는 않고, 위에서 아래로 갈수록 시간이 경과한다는 것을 뜻한다. 2. 활성화 막대와 메시지 활성화 막대는 현재 어떤 활동을 하고 있음을 의미하며, 생명선 상에 긴 직사각형으로 표현한다. 메시지는 호출자가 수신자에게 메소드 실행을 요청하는 이벤트를 발생시키는 것을 의미하며, 화살표로 표시한다. 메시지 종류에 따라 표현 방법이 상이하다. 종류 설명 표기 동기.. 2023. 5. 12.
렌더링(Rendering), 프리 렌더링(Pre-Rendering) Rendering렌더링이란 서버로부터 HTML 파일을 받아 브라우저로 뿌려주는 것을 말한다. Pre-renderingNextJS에서 프리 렌더링은 사전에 HTML 문서를 만드는 것을 말한다. 프리 렌더링 방식을 이용하면 클라이언트에 보내주기 전 HTML 문서를 볼 수 있으므로 검색엔진최적화(SEO, Search Engine Optimization)에 유리하다. 아래 그림을 보면 더 이해하기가 쉽다. NextJS에서 화면 렌더링 시 사전에 만든 HTML 파일이 렌더되며, 이후 자바스크립트 파일이 로드되며 인터렉티브 된다.프리 렌더링 방식으로는 두 가지가 있다. 사용자이 요청이 오기 전에 미리 렌더링을 해도 되는지/안되는지로 구분한다. 1. Static : 빌드 시 HTML 문서를 만들어 두고, 사용자가 요.. 2023. 5. 10.
빌드, 배포, 리포지토리, CI, CD, Jenkins 젠킨스가 무엇인지 알기 위해서는 빌드, 배포, 리포지토리, CI, CD 까지 이해해야 한다. 이번 기회에 정말 자주 듣고 사용하는 빌드, 배포, 리포지토리라는 단어와 CI, CD, 젠킨스까지 구글링하여 찾아본 내용을 정리해보았다. 빌드(Build)배포를 하기 위한 준비 과정으로, 서버에 올릴 수 있는 상태로 만드는 것을 뜻한다. 컴파일 된 코드를 실행할 수 있는 상태로 만드는 것이다. 배포(Deploy)개발을 완료하고 테스트 후 유저가 사용할 수 있도록 서버에 반영하는 것을 뜻한다. 빌드가 완성한 실행 파일을 사용자가 접근할 수 있는 환경에 배치시키는 것이다. 리포지토리(Repository, Repo)리포지토리는 개발자가 애플리케이션 소스 코드에 대한 변경을 수행, 관리하는 데 사용하는 중앙화된 스토리지.. 2023. 5. 10.
MSR(Multi Source Replication) MSR(Multi Source Replication) 여러 개의 Master DB를 1개의 Slave(Replica) 인스턴스에 연결하여 복제하는 구조로, Master DB를 하나의 Slave(Replica)에 모으는 역할을 한다. 각각의 Master를 Channel을 통해 연결하고, 이 Channel은 Replication 연결에 사용되는 Thread를 관리한다. Master DB란 데이터 원본 서버를 의미하며 데이터의 변경을 담당하고, Slave DB는 백업서버로서 데이터의 읽기 역할을 수행한다. 복제는 아래의 순서로 진행된다. 1. 보통 Master DB에서 데이터가 변경되면, 2. 변경이력이 Binary Log로 저장되고, 3. 관련 이벤트들이 Slave DB에 넘어가며, 4. Slave IO T.. 2023. 5. 10.
MSA, Message Queue, Apache Kafka 개발자들이 작성한 서비스 설계도를 보면 Kafka가 나온다. kafka 에 대해서만 알아보려고 했는데 kafka 를 찾아보니 Message Queue 에 대해 알아야하고, Message Queue 를 찾아보니 MSA(MicroService Architecture)까지 이어진다. MSA(MicroService Architecture)작고 독립적으로 배포 가능한 서비스들로 구성된 프레임워크를 의미한다. 완전히 독립적이고, 다른 기술 스택을 사용한다. 이전에는 Monolithic Architecture 방식으로 구현을 했다. 모듈별로 개발을 하고 하나로 패키징하여 배포하는 형태를 말한다. 하지만 규모가 커지고 여러 개발자들이 협업하는 환경에서는 부분장애, 영향도 파악, 배포 시간, 하나의 프레임워크에 종속적이.. 2023. 5. 7.
인 메모리 데이터베이스와 Redis 개발자들이 작성해놓은 서비스 설계 문서를 보면, 저 빨간색 네모상자를 세겹 쌓아놓은 아이콘이 자주 등장한다. 구글링하면서 얻은 정보를 정리해보았다. Redis란? Redis는 Remote Dictionary Server의 약자로, 인 메모리 데이터베이스(In-Memory Database, IMDB) 제품들 중 하나이다. 디스크가 아닌 메모리에 데이터를 보유하고 있기 때문에, 메모리 상에 색인을 통해 빠르게 검색할 수 있는 장점이 있다. 하지만 DB 서버 전원이 꺼져버리면 자료들이 모두 삭제된다. 참고로 색인(index)이란, 데이터를 기록할 때의 이름, 속성, 기록한 장소 등을 보기 쉽게 표시하는 것이다. 즉, 데이터에 대한 참조용 데이터를 의미한다. Redis의 장점과 사용 사례는 AWS 사이트에 가장.. 2023. 5. 3.
[컴과] 머신러닝: 소개, 분야, 분류, 회귀, 군집화, 특징추출, 앙상블학습,결정트리, 서포트 벡터 머신, 랜덤포레스트, 인공신경망, 딥러닝 머신러닝이란 인공지능의 한 분야로, 인간의 학습 능력을 기계를 통해 구현하는 방법이다. 주어진 데이터로부터 스스로 규칙을 만들고 새로운 지식을 얻는 방법이다. 데이터를 분석에 용이하도록 데이터를 가공하고, 핵심적인 특징을 추출하며, 결정함수를 통해 입-출력을 매핑하고 추론한다. 머신러닝의 성과를 측정하는 방법에는 목적함수를 얼마나 최적화하느냐가 있다. 목적함수란 학습 시스템이 달성해야하는 목표를 정의한 것으로, 대표적으로 오차함수가 있다. 오차함수는 학습 시스템이 출력한 값과 우리가 원했던 값의 차이로 정의되며, 이 차이를 최소화하는 것이 학습의 목표가 된다. 오차에도 학습에 사용한 데이터로 만들어진 오차가 있고, 학습에 사용되지 않은 새로운 데이터를 통해 얻어진 오차가 있다. 이러한 오차들을 일반화하여.. 2022. 12. 6.
[컴과] 인공지능: 개요, 지식기반 시스템, 탐색문제풀이, 게임트리, 퍼지이론, 컴퓨터시각, 기계학습, 인공신경회로망, 심층학습 인공지능이란? 인공지능이란 인간의 학습능력과 추론능력, 지각능력을 구현하는 컴퓨터 과학의 분야 중 하나이다. 최초의 신경망 모델은 1943년에 제안되었으며, 1950년 튜링 테스트가 제안되고, 1956년 다트머스 대학교에서 인공지능이라는 용어를 처음 사용하였다. 이후 많은 관심과 연구결과가 이루어졌지만 정보처리의 능력과 정보량의 부족으로 연구자금지원이 중단되며, 1969년 마빈 민스키와 시모어 페퍼트가 "퍼셉트론"이라는 책을 출간하며 지적한 한계로 인해 1970년대 1차 겨울기를 맞는다. 이후 1974년 역전파 알고리즘, 전문가 시스템의 성장 등으로 많은 연구가 있었지만 성장은 지지부진하여 2차 겨울기를 맞는다. 1990년대 이후부터는 문제해결과 비즈니스 중심으로 좁은 분야에 활용되고, 하드웨어의 성장,.. 2022. 12. 2.
728x90