Programming/Web 34

구글 클라우드 플랫폼 GCP 무료 서버 생성하기(22년 6월 기준)

구글 클라우드 플랫폼(Google Cloud Platform) 무료 서버 생성하는 방법에 대해서 알아보겠습니다. 구글링을 통해 GCP 무료 서버 구축 방법을 찾아보면 포스팅이 작성된 기간에 따라 서버 구축에 관련된 내용이 달라 헷갈릴 수 있는데요. 해당 포스팅은 '2022년 6월 기준' 구글 가이드 무료 사양에 맞는 서버 생성 방법을 작성한 글입니다. 아래 링크는 위 이미지의 출처인 구글 가이드를 첨부해두었으니 참고 부탁드리겠습니다. https://cloud.google.com/free/docs/gcp-free-tier/?hl=ko#compute (구글 가이드 링크) 위 무료 사항에서 주목해야 할 부분은 리전, 인스턴스 머신, 디스크 및 용량인데요. 리전은 오리건(us-west1), 아이오와(us-cen..

Programming/Web 2022.06.20

구글 클라우드 플랫폼(GCP) 프로젝트 삭제하는 방법

구글 클라우드 플랫폼(Google Cloud Platform)에서 사용중인 프로젝트를 삭제하는 방법입니다. 기존에는 프로젝트를 생성하여 API만 사용하다가 GCP 무료 서버를 만들기 위해서 들어왔는데, 기존에 만들어놓은 사용하지 않는 프로젝트들을 제거하려는 과정에서 생각보다 삭제 방법이 바로 보이지 않아서 혹시 찾으실 분들을 위해 방법 남겨놓습니다. 먼저 GCP 메인 화면에서 삭제하고자하는 프로젝트를 선택하여 들어갑니다. 프로젝트 삭제는 프로젝트 설정 부분에서 이뤄지는데요. 우측 상단의 버튼을 통해 프로젝트 설정으로 들어가거나, 좌측 IAM 및 관리자의 카테고리 중 설정 버튼을 통해 프로젝트 설정으로 이동합니다. 설정 우측 부분에 종료 버튼을 통해 프로젝트를 종료할 수 있는데요. 프로젝트는 즉시 종료되는..

Programming/Web 2022.06.19

ngrok 외부에서 로컬 개발환경 localhost 접근하기(mac)

ngrok을 사용하여 외부에서 로컬 개발환경 localhost에 접근하는 방법을 살펴보겠습니다. (기본적인 동작은 설치 및 가입 이후 간단한 명령어만 사용하면 되기 때문에 크게 어렵지 않습니다.) 먼저 ngrok에 대해서 설명하자면, ngrok은 로컬 개발환경인 localhost에서 구동 중인 웹 서비스를 외부 인터넷 환경에서 접근할 수 있도록 만들어주는 툴입니다. Ngrok exposes local servers behind NATs and firewalls to the public internet over secure tunnels. (ngrok 공식 홈페이지에서는 다음과 같이 설명되어 있습니다.) 웹 서비스를 개발하다 보면 localhost가 아닌 외부 환경에서 개발 중인 서비스에 접근해야 하는 경..

Programming/Web 2022.04.01

동기와 비동기, 블로킹과 논블로킹 개념 정리

'동기와 비동기, 블로킹과 논블로킹 - 비슷한 듯하면서도 비슷하지 않은 개념들' 프로그래밍을 하며 자주 접하게 되는 단어들이지만 개념적으로 명확하게 차이를 짚고 넘어간 적이 없었는데 이번에 WebClient를 사용하기 위해 공부하던 중 Spring WebFlux, Reactive Programming의 개념을 접하며 논블로킹(Non-Blocking)에 대해서 그리고 블로킹과 동기, 비동기에 대해서도 정리할 필요성을 느껴 정리하게 되었습니다. 동기(Synchronous)와 비동기(Asynchronous) - 동기 방식 동기(Synchronous) 방식은 데이터의 요청과 결과가 한 자리에서 동시에 일어나며, 현재 작업의 응답이 끝남과 동시에 다음 작업이 요청됩니다. 세탁기 돌리기 로봇 청소기로 바닥 청소하기..

Programming/Web 2021.12.28

디자인 패턴 - 퍼사드 패턴 (Facade Pattern) 개념과 예시

'디자인 패턴 중 하나인 퍼사드 패턴(Facade Pattern) 개념과 예시' *** 'Facade'는 프랑스어 'Façade'에서 유래된 단어로 건물의 출입구로 이용되는 정면 외벽 부분을 가리키는 말로 '건물의 정면'을 의미합니다. Facade Pattern의 목적은 복잡한 서브 시스템을 인터페이스로 감싸서 사용하기 쉽게 만드는 것인데요. 객체 지향 프로그래밍 분야에서 많이 사용되며, 제3의 API(Third Party API) 같은 외부 라이브러리를 추상화하는데도 사용됩니다. Gof(Gang of Four)에 따르면 Facade 패턴은 "하위 시스템을 보다 쉽게 사용할 수 있게 해주는 고급 인터페이스"로 정의되어 있습니다. 퍼사드 패턴은 디자인 패턴(Design Patterns) 중에서도 구조 패턴..

Programming/Web 2021.12.16

Apache Log4j2 치명적 취약점, 해결방안은? CVE-2021-44228

Log4j2 치명적 취약점 'CVE-2021-44228' Log4j2는 아파치 소프트웨어 재단에서 자바(Java) 언어로 제작된 로깅 라이브러리로, 서버와 프로그램의 유지 관리를 목적으로 동작 상태를 기록으로 남기기 위해서 사용되는 기능입니다. 이번에 발견된 'CVE-2021-44228', Log4Shell 혹은 LogJam으로 명명된 취약점은 '마인크래프트'에서 처음 확인되었고, 자바(Java) 언어로 개발된 마인크래프트 버전에서 프로그래밍 코드로 이루어진 특정 채팅 메시지를 입력하면 대상 컴퓨터에서 원격으로 프로그램을 실행시킬 수 있는 것으로 나타났습니다. 이는 Log4j2 중에 존재하는 'JNDI(Java Naming and Directory Interface)' 인젝션 취약점을 악용한 것으로, 이..

Programming/Web 2021.12.12

프로그래밍 시간 표현 단위 Unix Time ( = Epoch Time ) 이란

프로그래밍을 하게 되면 '1635083262' 와 같은 형식의 숫자만으로 시간을 표현하는 경우가 있습니다. 이 같은 표현 방식을 Unix Time 또는 Epoch Time 이라고 하는데요. Unix Time, Epoch Time은 부르는 이름만 다를 뿐 같은 것을 의미합니다. (POSIX Time 이라고도 합니다.) 이것은 시간을 나타내는 방식으로, '1970년 1월 1일 00:00:00 협정 세계시(UTC)' 부터의 경과 시간을 초로 환산하여 정수로 나타낸 것입니다. * 유닉스 시간에서 윤초(Leap Second)는 반영하지 않습니다. 이 시간 표현 방식은 유닉스 계열의 운영체제나 여러 다른 운영 체제, 파일 형식들에서 사용되며, 어떤 일이 발생했을 때 무엇이 먼저 발생하고, 나중에 발생했는지를 판단할..

Programming/Web 2021.10.24

프록시 패턴(Proxy Pattern) 이란?

프록시 패턴(Proxy Pattern)이란? 실제 기능을 수행하는 객체 Real Object 대신 가상의 객체 Proxy Object를 사용하여 로직의 흐름을 제어하는 디자인 패턴입니다. 이미지를 보면 Proxy는 RealSubject를 참조하고 있습니다. 동시에 Proxy와 RealSubject는 동일한 인터페이스 Subject를 구현합니다. 클라이언트(Client)는 Subject의 인터페이스를 참조하게 되는데, 앞서 말했듯이 Proxy는 RealSubject를 참조하고 있기 때문에 실제 이 Subject는 Proxy를 통해 RealSubject와 데이터를 주고 받게 됩니다. 쉽게 프록시는 RealSubject의 대리인 역할을 하는데요. 왜 이런 역할이 필요한 것일까요? 프록시 패턴의 취지는 Real..

Programming/Web 2021.09.01

Web Socket 웹 소켓 개념 정리 (HTTP, Ajax)

Web Socket 이전 웹 소켓이 나오기 전에 통신은 HTTP 통신, Ajax 통신을 사용했습니다. 이 두 가지 통신 방법은 HTTP를 기반으로 이루어졌으며 HTTP는 Request, Response 기반의 Stateless Protocol입니다. stateless protocol은 클라이언트가 서버에 요청을 보내야만 응답을 얻을 수 있는 단방향 통신인데요. 이 경우 서버에 변경사항이 발생했을 때 서버는 클라이언트에 변경사항을 알릴 방법이 없다는 문제가 발생하게 됩니다. 이러한 문제를 해결하기 위해 요청을 보내지 않아도 서버에서 응답을 줄 수 있는 기술인 '웹 소켓 (Web Socket)'이 HTML5의 표준 기술로 개발되었습니다. Web Socket 웹 소캣 개념 정리 웹 소켓(Web Socket)은..

Programming/Web 2021.08.26

(Web) HTTP 통신의 개념과 예제

HTTP (Hyper Text Transfer Protocol)란, 브라우저와 서버가 통신할 수 있도록 만들어주는 여러 프로토콜 가운데 한 종류로 웹 브라우저와 웹 서버 사이에 HTML(웹 문서를 만들기 위한 언어) 문서를 주고받는데 쓰이는 통신 프로토콜입니다. * 초기에는 HTTP 파일을 전송하기 위한 목적으로 만들어졌으나 현재는 JSON, Image 파일 등 또한 전송할 수 있습니다. 일반적으로 전송 계층 프로토콜로 TCP를 사용하고, 네트워크 계층 프로토콜로 IP를 사용합니다. 이 두 계층을 합쳐서 TCP/IP라는 이름으로 부릅니다. TCP/IP에서는 IP 주소를 사용해서 통신할 컴퓨터를 결정하고, 포트 번호를 사용해서 해당 컴퓨터의 어떤 프로그램과 통신할지를 결정합니다. (HTTP에서는 기본적으로..

Programming/Web 2021.08.26