목록분류 전체보기 (39)
csct3434
실시간 통신에 활용될 수 있는 각각의 통신 방식 및 기술들이 실제로 어떻게 활용되는지 설명과 함께 살펴보도록 하겠습니다.PollingPolling은 가장 기본적인 실시간 통신 방식으로, 클라이언트가 주기적으로 서버에 새로운 데이터가 있는지 확인하는 방식입니다. 매우 단순한 방식이지만, 실제로 새로운 데이터가 없더라도 계속해서 요청을 보내야 하므로 서버와 네트워크에 불필요한 부하를 주는 단점이 있습니다. 또한 실시간성을 높이기 위해 폴링 주기를 높일 경우 요청이 많이 발생하여 서버의 부하가 증가할 수 있습니다. 반대로 폴링의 주기를 늘릴 경우 실시간성이 떨어지게 됩니다. 활용 사례 : 데이터 업데이트가 빈번하지 않은 경우, 실시간성이 크게 중요하지 않은 경우스포츠 경기의 문자 중계 (경기 상황이 1-2분 ..
STOMP Simple Text Oriented Messaging Protocol클라이언트와 서버 간에 전송할 메시지의 유형, 형식, 내용 등을 정의한 텍스트 기반 메시징 프로토콜Publish-Subscribe 매커니즘을 제공하며 Message Broker를 통해 다른 사용자에게 메시지를 보내거나 서버가 특정 작업을 수행하도록 메세지를 전송TCP 또는 WebSocket과 같은 양방향 네트워크 프로토콜을 기반으로 동작웹 소켓과 STOMP를 함께 사용하면 메시지의 구조가 정해져있어 양방향 통신 구현에 용이 Message BrokerSubscriber는 특정 Topic을 구독하고, Publisher는 해당 Topic으로 메시지를 전송Message Broker는 Publisher로 부터 전달받은 메시지를 Sub..
모집 일정지원서 접수 : 4.22(월) ~ 5.7(화)SW적성진단 : 비전공 - 5.11(토) / 전공 - 5.19(일)1차 발표 : 5.28(화) 오후 3시인터뷰 : 6.5(수) ~ 6.12(수)최종 발표 : 6.19(수) 오후 3시 지원서홍익대학교 컴퓨터공학과 졸업 (4.28 / 4.5)1지망 : 서울 Coding Track(Python, Java)어학사항 : OPIc IM 에세이있는 그대로 담백하게 적으려고 노력했다.Q1. 어떠한 개발자로 성장하고 싶은지?어린 나이에 컴퓨터에 매료되었고 이에 적성과 흥미를 느낌 -> 컴퓨터 공부에 전념하고자 고등학교 미진학 -> 혼자 공부하는 것에 한계를 느껴 대학교 진학 -> 실전 역량을 키우고자 ICPC, 부트캠프, 해커톤 참여현재는 일기 플랫폼 운영하면서 문제..
애그리거트도메인 객체 모델이 복잡해지면 개별 구성요소 위주로 모델을 이해하게 되고 전반적인 구조나 큰 수준에서 도메인 간의 관계를 파악하기 어려워진다. 주요 도메인 요소 간의 관계를 파악하기 어렵다는 것은 코드를 변경하고 확장하는 것이 어려워진다는 것을 의미한다. 이때 상위 수준에서 모델을 정리하면 도메인 모델의 복잡한 관계를 이해하는데 도움이 된다. 상위 수준에서 모델이 어떻게 엮여 있는지 알아야 전체 모델을 망가뜨리지 않으면서 추가 요구사항을 모델에 반영할 수 있다.상위 수준에서 모델을 조망할 수 있는 방법이 바로 애그리거트다.한 애그리거트에 속한 객체는 유사하거나 동일한 라이프 사이클을 갖는다.한 애그리거트에 속한 객체는 다른 애그리거트에 속하지 않는다.애그리거트는 독립된 객체 군이며 각 애그리거트..
네 개의 영역표현 영역 (Presentation)표현 영역은 사용자의 요청을 받아 응용 영역에 전달하고 응용 영역의 처리 결고를 다시 사용자에게 보여주는 역할을 한다.웹 애플리케이션의 표현 영역은 HTTP 요청을 응용 영역이 필요로 하는 형식으로 변환해서 응용 영역에 전달하고, 응용 영역의 응답을 HTTP 응답으로 변환하여 전송한다.예를 들어 표현 영역은 웹 브라우저가 HTTP 요청 파라미터로 전송한 데이터를 응용 서비스가 요구하는 형식의 객체 타입으로 변환해서 전달하고, 응용 서비스가 리턴한 결과를 JSON 형식으로 변환해서 HTTP 응답으로 웹 브라우저에 전송한다.응용 영역 (Application)public class CancelOrderService { @Transactional pub..
도메인이란?도메인 : 소프트웨어로 해결하고자 하는 문제 영역한 도메인은 여러 하위 도메인으로 구성된다 (ex : 온라인 서점 - 회원, 주문, 카탈로그, 리뷰, 혜택, 배송, 결제, 정산)한 하위 도메인은 다른 하위 도메인과 연동하여 완전한 기능을 제공한다. (ex : 고객이 물건을 구매하면 주문-혜택-결제-배송 하위 도메인의 기능이 엮이게 됨)요구사항의 이해요구사항 분석 및 설계는 개발에 있어서 첫 단추 (Garbage In, Garbage Out)개발과 관련된 도메인 전문가, 관계자, 개발자가 같은 지식을 공유하고 직접 소통할수록 도메인 전문가가 원하는 제품을 만들 가능성이 높아짐개발자와 각 도메인의 전문가가 직접 대화해야 정보가 왜곡되고 손실되는 것을 방지할 수 있음도메인 전문가 만큼은 아니더라도 ..
도입플랫폼을 운영하며 액세스 로그를 분석하던 중, API 서버에서 제공하지 않는 엔드포인트로 다수의 요청이 들어오는 것을 발견했습니다. 해당 요청에 대해 검색해보니, 원격 코드 실행 혹은 Credential 탈취를 목적으로 한 공격이었습니다.요청이 들어오는 IP를 확인해보니, 글로벌 서비스가 아님에도 다양한 국가에서 요청이 발생하는 것으로 보아 봇에 의한 공격이 의심되었습니다.다행히 Nginx와 같은 웹서버를 사용하고 있지 않았기에 이러한 공격들은 WAS의 필터에서 전부 막히고 있었습니다.하지만 불필요한 요청으로 인해 서버의 부하가 증가하고 액세스 로그가 더럽혀지기에, 이러한 공격을 아예 차단하고자 AWS WAF를 통해 화이트리스트 방식의 ACL을 도입했습니다.AWS WAF 구성https://sessin..
1. EC2 권한 설정EC2 인스턴스와 연결된 IAM Role에 CloudWatchAgentServerPolicy 정책을 추가해 줍니다. 인스턴스와 연결된 IAM Role이 없는 경우 AWS Console에 접속하여 아래의 순서대로 진행해 주세요.[IAM] -> [액세스 관리 | 역할] -> [역할 생성][신뢰할 수 있는 엔티티 유형] : "AWS 서비스", [사용 사례] : "EC2" 선택 후 [다음][권한 정책] 검색 창에 "CloudWatchAgentServerPolicy" 입력하여 체크박스 선택 후 [다음]역할 이름 "ec2_role" 입력 후 [역할 생성][EC2] -> [인스턴스 | 인스턴스] -> 체크박스 선택[작업] 버튼 클릭 후 [보안 | IAM 역할 수정][IAM 역할] : "ec2_r..
application.propertiesserver: tomcat: basedir: /app accesslog: enabled: true directory: logs prefix: access_log suffix: .log rotate: true max-days: 2 pattern: "%h %l %u %t \"%r\" %s %b"로그 저장 위치 : ${basedir}/${directory}/${prefix}.{yyyy-MM-dd}${suffix}예시 : /app/logs/access_log.2024-05-25.logrotate : 로그 로테이션 활성화 (기본값 : true)max-days : 로그 로테이션 시 저장 기간 (기본값 ..
IO어떤 디바이스를 통해서 이루어 지는 모든 작업을 IO라고 한다IO는 성능에 영향을 가장 많이 미치는 부분이다.자바에서 IO는 스트림을 통해서 이루어진다주요 클래스클래스명용도ByteArrayInputStream바이트로 구성된 배열을 읽어서 입력 스트림을 만든다.FileInputStream이미지와 같은 바이너리 기반의 파일 스트림을 만든다.FilterInputStream여러 종류의 유용한 입력 스트림의 추상 클래스이다.ObjectInputStreamObjectOutputStream을 통해서 저장한 객체를 읽기 위한 스트림을 만든다.PipedInputStreamPipedOutputStream을 통해서 출력된 스트림을 읽어서 처리하기 위한 스트림을 만든다.SequenceInputStream별개인 두 개의 스..