WebRTC는 Web Real-Time Communication의 약자로, 웹 브라우저 간에 실시간으로 오디오, 비디오, 데이터 스트림을 주고받을 수 있도록 지원하는 기술이다. WebRTC를 통해 사용자는 플러그인 없이 웹에서 직접 영상 통화, 파일 공유, 게임 등 다양한 실시간 커뮤니케이션 서비스를 구현할 수 있다. WebRTC는 P2P(Peer-to-Peer) 기술을 사용하여 두 클라이언트 간의 직접적인 연결을 제공한다. 이를 통해 데이터가 서버를 거치지 않고 바로 전송되어 지연을 줄이고 네트워크 부하를 줄이는 장점이 있다.Peer-2-Peer에서도 서버가 필요한 이유: 시그널링 서버WebRTC는 Peer-to-Peer 연결을 사용하지만, 실제로 P2P 연결이 성립되기 위해서는 시그널링(Signali..
Null이라는 개념을 만든 것이 "백만 달러짜리 실수"라는 일화를 한 번쯤 들어봤을 텐데, 그만큼 Null과 NullPointerException(이하 NPE)은 많은 개발자들을 괴롭히고 애플리케이션에 문제를 야기시킨다. 그래서 Null을 다루지 않기 위한 여러 가지 방법을 사용하는데, 대표적인 방법으로 Null Object Pattern을 사용하여 Null을 대신할 객체(이하 Null Object)를 만들어 둔다. 나쁘지 않은 방법이다. 특히 특정 객체에 대한 Null 문제가 아니라 객체의 속성이나 필드가 Null인 케이스를 방어해 두기도 좋다. 그러다 보면 보이게 되는 코드들이 맹목적인 Null 방어 코드들이다. 마치 Null만 막으면 애플리케이션이 안전해진다고 착각한다. Null을 다루는 코드는 위..
※ 제 부족한 생각을 정리한 주관적 포스팅 입니다. 개발을 처음 시작하면서 적당한 언어를 배우고 나면 따라오는것이 객체지향 프로그래밍(이하 객체지향)에 대한 개념이다. 그리고 객체지향을 집중적으로 공부하다보면 마치 객체지향은 '정답'이고 절차지향은 '오답'이라는 생각에 갇히게 된다. 개발자 사이에 이런 분위기가 전반적으로 깔려 있는것도 사실이다. 열심히 객체지향을 공부하고 Spring 환경의 실무 코드를 보고 있으면 마치 엄청난 안티패턴들이 실무에 자리잡고 있지 않은가 한탄하게 된다. 내가 공부했던 객체지향은 어디에 적용되어있는가? 라는 회의감도 빠지게된다. 공부한 이상적 패턴과 현실의 괴리감에 고통스럽기도 하다. 언젠간 이러한 구조를 객체지향적으로 바꿔야겠다는 다짐도 하게된다. 신기한건 실무에 있다보면..
슬랙 앱을 만들면서 다음에 같은 실수와 삽질을 하지 않도록 기록하는 포스팅.(API 구현은 AWS Lambda에 Node기반으로 구현하였다.) 슬랙 앱 설정 관련1. 슬랙에서 앱을 호출해야 한다면 Workspace에 설치되어야 한다. 2. 슬랙 앱이 Bot으로 호출되어야 한다면 Bot 설정이 필요하다.`App Hom`메뉴에서 Bot으로 설정Display Name(Bot Name)과 Default Name 설정을 해야한다.3. 대화식 상호작용을 구현하고 싶다면 Interactivity 설정을 해준다.슬랙내 대화식 상호작용, 버튼이나 숏컷과 같은 컴포넌트로 대화식 상호작용을 구현하고 싶은경우 Interactivity 설정에 API를 명시한다. 4. Slash Command를 구현하고 싶다면 Slash Com..
스프링 부트 애플리케이션을 실행할 때, 명령어 뒤에 붙는 인자(argument)는 애플리케이션에 전달되는 값으로 사용됩니다. 이 인자 중에서 --가 붙는 인자는 애플리케이션의 실행 옵션을 지정하는 것이며, --가 붙지 않는 인자는 애플리케이션에 전달되는 인자 값으로 사용됩니다. --가 붙는 인자는 애플리케이션의 실행에 영향을 미치는 설정을 지정할 수 있습니다. 예를 들어, --server.port=8080과 같이 HTTP 포트 번호를 설정하거나, --spring.profiles.active=dev와 같이 애플리케이션 프로파일을 설정할 수 있습니다. 반면, --가 붙지 않는 인자는 애플리케이션에 전달되는 값으로 사용됩니다. 예를 들어, java -jar myapp.jar arg1 arg2와 같이 애플리케이..
Spring Boot에서는 Jackson 라이브러리를 사용하여 JSON 데이터를 처리합니다. Jackson은 Java 객체와 JSON 데이터 간의 변환을 수행하는 라이브러리로, Java 객체를 JSON으로 직렬화(Serialize)하거나, JSON 데이터를 Java 객체로 역직렬화(Deserialize)할 수 있습니다. Spring Boot에서는 Jackson 라이브러리의 ObjectMapper 클래스를 사용하여 JSON 데이터를 처리합니다. Jackson에서는 직렬화와 역직렬화를 수행할 때 사용하는 Serializer와 Deserializer를 지정할 수 있습니다. Serializer는 Java 객체를 JSON 데이터로 변환할 때 사용되고, Deserializer는 JSON 데이터를 Java 객체로 변..
본 포스팅은 AWS 공식 문서 내용을 정리 & 자체번역 한 내용입니다. (이후 공식 번역이 지원되는 경우 공식 문서를 참고바랍니다.) AWS SAM은 쉽게 서버리스 애플리케이션을 구성하고 관리 할 수 있는 AWS SAM CLI 커맨드 라인 툴을 제공합니다. AWS SAM CLI를 사용하기 위해서는 몇가지 설치와 설정이 필요합니다. macOS에서 AWS SAM CLI 설치하기 AWS CLI를 사용하기 위해서는 사전 요구사항을 설치하고 구성해야합니다. AWS 계정 생성 AWS Identity and Access Management (IAM), AWS credentials 설정 도커(Docker) 설치 (참고: 도커는 --use-container 옵션을 사용하여 로컬환경에서 테스트 할때 사용됩니다.) Home..
본 포스팅은 AWS 공식 문서 내용을 정리 & 자체번역 한 내용입니다. (이후 공식 번역이 지원되는 경우 공식 문서를 참고바랍니다.) AWS Serverless Application Model (이하 AWS SAM)은 AWS에서 서버리스 애플케이션을 만들 수 있는 오픈소스 프레임워크 입니다. 여기서 서비리스 애플리케이션이란 단순히 AWS Lambda를 의미하는 것이 아니라, API, 데이터베이스, 이벤트매핑 등의 추가 리소스와의 조합을 의미합니다. AWS SAM은 다음과 같은 구성 요소로 이루어집니다. AWS SAM template specification. 서버리스 애플리케이션 스펙(specification)을 정의하는데 사용됩니다. 서비리스 애플리케이션에서 사용되는 API, 권한, 설정, 이벤트들을 ..