프로그래밍/Programming
프로그래밍/Programming
2021. 3. 1.
[AWS] API Gateway 리소스 정책 사용하기
AWS의 API Gateway는 간편하게 Public API 환경을 구축할 수 있는 서비스이다. 인프라의 상당수가 AWS Resource로 구성되어 있다면, API Gateway를 활용하게 되는 Case가 많이 발생할 것이다. 하지만, API GW는 생성 시점부터 Access Control이 설정되지 않은 완전한 Public 구성으로 되어있기 때문에 보안상의 이슈와 직결될 수 밖에 없다. 사내에 보안팀이 별도로 있다면, API GW의 필요성과 API에 대한 접근 제한을 요청하는 보안팀의 요청을 겪게 될 확률이 높다. 물론 AWS에서는 API에 대한 ACL 설정을 위해 리소스 정책(Resource Policy)을 제공하고 있다. (참고) 리소스 정책에는 다음과 같은 3가지 기준을 설정할 수 있다. AWS ..
프로그래밍/Programming
2020. 8. 31.
[Kubernetes] 쿠버네티스(Kubernetes)란? (3편) External Traffic
(1)편과 (2)편에 걸쳐서 Cluster에서 서비스가 동작되는 데에 요구되는 Hardware와 Software 구성을 살펴보았다. 그렇다면 이번에는 외부의 요청(External Traffic)이 어떻게 Cluster로 유입되는 지를 살펴보려고 한다. ClusterIP _ Default Service Type in Kubernetes ClusterIP는 Kubernetes의 Default Service Type이다. ClusterIP는 Cluster 내의 다른 service와 통신할 수 있도록 한다. 외부 접근(External access) 그 자체를 의미하는 것이 아니며, proxy를 통해 외부 요청(External Traffic)이 service에 접근이 가능하다는 것이다. 하지만 Kubernetes..
프로그래밍/Programming
2020. 8. 30.
[Kubernetes] 쿠버네티스(Kubernetes)란? (2편) Software
Container Container는 각 Application의 실행 환경을 다른 Application 구성 요소와 분리하여 갖고 있다. Pods _ Group of Containers Pod는 Container의 그룹으로 Kubernetes에서 동작이 이뤄지는 가장 작은 단위에 해당한다. Pod에는 복수의 Container가 포함될 수 있지만, Kubernetes에서 복제가 이뤄지는 단위가 Pod이기 때문에 일반적으로는 Pod당 1개의 Container를 설정한다. Deployments _ Manager for Pods Deployment의 주된 역할에는 각 Pod과 Pod의 Replica Set에 업데이트 된 부분을 일괄로 전달하는 것에 있다. 이 때, 얼마나 많은 Replica Set을 구동시킬 것..
프로그래밍/Programming
2020. 8. 25.
[Kubernetes] 쿠버네티스(Kubernetes)란? (1편) Hardware
Programming Language도 시간이 지남에 따라 많은 부분에서 비슷한 특징을 공유하게 되는 것과 같이 Service 구성을 위한 Technical Stack도 트렌드에 따라서 전체적인 Service Architecture도 유사한 구성을 보이게 된다. 이번에는 그 중에서 MSA(Micro Service Architectrue), Cloud Computing, Serverless Architecure가 주된 흐름을 보이는 최근의 Tech 트렌드에 유용한 Kubernetes에 대해서 한번 간략하게 살펴보고자 한다. (공식 문서와 구글링에 기반하여 직접 학습을 하면서 작성하는 기록의 형식이 될 것으로 보여, 틀린 부분과 수정이 필요한 부분이 있을 수도 있음을 미리 밝힌다) Nodes _ Worker..
프로그래밍/Programming
2020. 5. 5.
[Same-Origin Policy] Local 환경에서 CORS policy 에러 해결하기
상황은 이러했다. 서비스 구축이 우선이었기 때문에 관리자용 페이지가 아직은 마련되지 않았다. 일일이 API를 호출해서 향후 Admin Site에서 입력하게 될 필요한 정보들을 추가할 수도 있었지만, 사용성을 높이고 팀 내 개발자들과 기획자들 모두가 사용할 수 있게끔 HTML로 임시 페이지를 만들어두는 것이 좋을 것이라 생각했다. 위의 에러 메시지는 블로그를 작성하기 위해 임시로 만든 파일이고, 경로이기 때문에 콘솔의 에러 메시지 경로이지만.. 작성한 html 파일을 로컬에서 Chrome 브라우져로 실행을 시키니, CORS 관련 에러가 나타나면서 static한 html 파일의 형태만 그려지고, 아무런 동작이 되지 않았다. 에러가 발생한 이유는? Same Origin Policy 구글에서 위와 같은 에러 메..
프로그래밍/Programming
2020. 4. 26.
프레임워크(Framework)와 라이브러리(Library)의 차이점
Express.js는 Node.js에서 가장 많이 사용되고 있는 "Web Framework"이다. React.js는 웹 서비스 중에서도 사용자 인터페이스 개발을 위해 사용되는 "Library"이다. 각각의 공식 문서에서도 명확하게 프레임워크와 라이브러리를 구분하여 사용하고 있는 만큼, 두 개념에는 확실한 차이가 있다. Framework (프레임워크) 프레임워크는 "기반 구조"를 의미하는데, 제어의 역전(IoC)이 적용된 대표적인 기술이다. 프레임워크는 Application 개발을 위한 기본적인 로직을 "뼈대"의 차원에서 제공해주는 것이다. Express.js와 같은 프레임워크는 단지 기본 틀만 제공해주기 때문에 실제 Application의 구동을 위한 코드를 직접 작성해줘야 한다. 프레임워크가 제공해주는..
프로그래밍/Programming
2020. 4. 12.
[web] Web Server와 WAS_개념과 특징
Web Server HTTP Protocol을 기반으로 하여 Client(웹 브라우저)의 요청을 서비스하는 기능을 담당한다. 대표적인 Web Server에는 Nginx, Apache Server, IIS(Windows 전용 Web Server) 등이 있다. Web Server는 요청의 종류에 따라 정적인 컨텐츠를 제공할 경우, WAS를 거치지 않고 바로 Client에 응답을 전달하고, 동적인 컨텐츠를 요청받은 경우, Client의 Request를 WAS에 보낸 뒤 WAS의 처리 결과를 Client에 응답으로 전달한다. Web Server는 정적 컨텐츠 만을 처리하도록 기능을 분배하여 서버의 부담을 줄일 수 있다. 하지만, Web Server 만을 사용한다면 Client가 원하는 요청에 대한 결과를 모두 ..
프로그래밍/Programming
2020. 4. 4.
[OS] Semaphore(세마포어)와 Mutex(뮤텍스)
기존에 구축해놓았던 프로젝트의 구조 변경이 필요한 순간이 찾아왔었다. 몇 가지 이슈로 인해 Singleton Pattern에 기반한 구조 변경이 필요하였고, 관련 디자인 패턴을 검색하는 과정에서 'Semaphore'라는 공통의 키워드를 발견하게 되었다. 세마포어(Semaphore) 공유된 자원의 데이터를 여러 프로세스가 접근하는 것을 막는 것. Wikipedia의 정의에 따르면 세마포어는 "두 개의 원자적 함수로 조작되는 정적 변수로서, 멀티프로그래밍 환경에서 공유 자원에 대한 접근을 제한하는 방법"으로 사용된다. 세마포어는 일반적으로 비교적 긴 시간을 확보하는 리소스에 대하여 이용하게 된다. Unix 시스템의 프로그래밍에서 OS의 리소스를 경쟁적으로 사용하는 Multi Process 환경에서 액션을 제..