본문 바로가기

전체 글

[Docker]풀스택 앱 컨테이너화, Docker Compose를 이용해 실행해보자 깃허브 레포지토리에 해당 실습파일을 클론해오자. backend, frontend 폴더와 각 폴더의 내용을 확인할 수 있다. frontend Dockerfile을 확인해보니, httpd:2.4를 기반으로 앱이 돌아가는 것을 알 수 있다. FROM httpd:2.4 Docker hub에서 httpd:2.4 이미지를 다운받자. sudo docker pull httpd:2.4 작성된 index.html파일과 script.js을 httpd:2.4 이미지로 실행된 컨테이너에 넣어주면 실행될 것이다. Dockerfile을 수정해보자. FROM httpd:2.4 COPY . /usr/local/apache2/htdocs/ apache2는 정적 호스팅을 하기 위해 /usr/local/apache2/htdocs/ 경로에 .. 더보기
[Docker]docker: Error response from daemon: failed to create shim: OCI runtime create failed: OS: windows wsl 1 docker: 20.10.13 도커를 다운받고, 테스트하기 위해 hello-worold 이미지를 컨테이너로 실행하던 중 다음과 같은 에러를 만났다. 에러 코드는 다음과 같다. docker: Error response from daemon: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:722: waiting for init preliminary setup caused: EOF: unknown. ERRO[0004] error waiting for container: context canceled 해.. 더보기
[Docekr]Node.js 웹 앱을 도커라이징 해보자 공식문서를 참고하여 찬찬히 따라해본다. Node.js 앱 생성 package.json 파일을 생성하고 내용을 넣는다. npm install을 통해 의존성을 설치한다. 이 때 설치되는 것은 명시되어 있는대로 "express": "^4.16.1"이다. package-lock.json이 생성되었다면 성공적으로 설치된 것이다. server.js를 만든다. Dockerfile 생성 FROM node:12 # 앱 디렉터리 생성 WORKDIR /usr/src/app # 앱 의존성 설치 # 가능한 경우(npm@5+) package.json과 package-lock.json을 모두 복사하기 위해 # 와일드카드를 사용 COPY package*.json ./ RUN npm install # 프로덕션을 위한 코드를 빌드하는 .. 더보기
[네트워크]Cache Cache에 대해 학습하던 중 토스팀의 기술블로그에 훌륭한 글이 있어서 남긴다. 웹 서비스 캐시 똑똑하게 다루기 웹 성능을 위해 꼭 필요한 캐시, 제대로 설정하기 쉽지 않습니다. 토스 프론트엔드 챕터에서 올바르게 캐시를 설정하기 위한 노하우를 공유합니다. toss.tech 해당 글에는 Cache-Control의 구체적인 사용방법과 주의점에 대해 말한다. 또한 CDN과 같은 중간 서버가 있는 경우 어떻게 캐시를 관리하면 좋을지 질문한다. 다음에 캐시에 대해 헷갈릴 때면 꼭 봐야겠다. MDN문서는 정말이지 없는게 없다. HTTP caching - HTTP | MDN 웹 사이트와 애플리케이션의 성능은 이전에 가져온 리소스들을 재사용함으로써 현저하게 향상될 수 있습니다. 웹 캐시는 레이턴시와 네트워크 트래픽을 .. 더보기
[네트워크]ifconfig명령어로 네트워크 인터페이스 관리하기 ifconfig관련 해서 검색해보던중, WhaTap에 좋은 글이 있었다. 리눅스 네트워크 관리에 필요한 사용법 11가지 | 와탭 블로그 네트워크 인터페이스 관리와 모니터링을 위한 가장 기본이 되는 도구인 ifconfig를 와탭과 함께 알아봅시다. www.whatap.io 역사는 반복된다고 했던가. 인터넷 초창기 개발자들은 직접 서버의 네트워크를 구성하고 모니터링해 가면서 서비스를 만들었습니다. 그리고 분야가 점점 세분화되면서 서버의 네트워크 구성은 전문 엔지니어들의 영역으로 발전해 나갔습니다. 하지만 클라우드는 시스템 엔지니어링에 관한 전문 영역을 가져가면서 개발자들에게 기본적이며 논리적인 부분의 시스템 엔지니어링 역할을 요구하고 있습니다. 그리고 데브옵스는 시스템 엔지니어와 개발자 모두에게 기본적인 시.. 더보기
[네트워크]프록시(Proxy) 프록시(Proxy)란 무엇일까? 사전적으로 대리, 대리권을 의미한다. 원 서버를 대리하여 통신하며 캐시, 로드밸런서, 보안 등 중계 역할을 하는 서버를 말한다. 해당 그림처럼 프록시 서버가 중간에 위치하기에, 클라이언트는 프록시 서버를 "서버"라 인식하고, 서버는 프록시 서버를 "클라이언트"로 인식한다. 왜 프록시를 사용할까? 앞서 캐시, 로드밸런서, 보안 등 중계 역할을 한다고 했다. HTTP의 Connectionless, Stateless 성질로 한계점이 있기에 그것을 해결하기 위해 프록시가 사용되는 것은 아닐까? 캐시, 로드밸런서, 보안 등 각각 알아보고 왜 프록시를 사용하는지 고민해보자. 프록시 서버의 10가지 사용 예시 위 공식문서에 프록시 서버의 예시에 대해 잘 나와있다. 이것을 읽기 쉽게 정.. 더보기
[네트워크 기초]OSI 7계층과 HTTP의 진화, Socket과 Port의 차이점 네트워크에 대해 학습할 것이다. 직접 만들어 보았던 WAS도 앞으로 사용해볼 AWS와 같은 클라우드 서비스도 모두 네트워크를 통해 이루어진다. 따라서 네트워크에 대해 아는 것은 DevOps 엔지니어로써 서버를 유지, 보수하기 편하다고 생각한다. OSI 7계층과 TCP/IP 4계층 네트워크라 하면 보통 이 그림이 먼저 떠오른다. 근데 대체 왜 나눌까? 이는 엔지니어로써 네트워크에 문제가 발생하였을때, 대체 어디서 문제가 발생했는지 빠르게 알아내고 해결해 나가기 위함이다. 따라서 각 계층의 역할과 종류, 기능을 학습할 필요가 있다. 더욱이 어떻게 활용되는지 깊게 알아보면 좋을 것이다. OSI 7계층과 TCP/IP 4계층으로 왜 나눌까? 두 계층은 위 그림처럼 명확하게 구분되지는 않는다. 네트워크 계층의 IP.. 더보기
[프로젝트 회고]WAS로 투표 서비스 만들기! 나는 Codestates의 DevOps 개발자 과정을 수강하고 있다. 2월 3일부로 오늘까지 무려 한달의 과정이 지났다. 지난 나는 한낱 경제학을 좋아하는 졸업예정자였다. 막연히 개발자의 꿈을 품고 있었다. 지난 과정을 되돌아보니 꽤 많은 것들을 배웠다. 이번 회고에서는 내가 배웠던 것들을 점검해보고 앞으로 어떻게 더 성장할 수 있을지 방향을 점검해보고자 한다. 배웠던 점 데브옵스(DevOps)란? 데브옵스.. 뭘까? 이제 프론트엔드, 백엔드라는 개념을 접한 나에게는 어렵게 다가온다. 데브옵스란 CI/CD라는 파이프라인을 구성하고 더 효율적이고 안정적으로 개발, 배포, 운영을 지원하는 개발 문화이다. 여기서 중요한 것은 파이프라인, 개발, 배포, 운영과 같은 전문적인 단어들이 아닌, 바로 개발 문화라는 .. 더보기