전체 글
더 나은 프로그래머가 되기위한 흔적
-
이번에 외주로 맡고있는 서비스의 안드로이드 앱 API를 33으로 업데이트하며 겪은 문제 중 하나다. 지금이야 서버나 데이터베이스 위주로 맡고있지만 이 외주서비스는 내가 안드로이드, 아이폰 앱개발, 일부 서버, 데이터베이스를 맡았기 때문에 간혹 내가 들어갈 일이 있다. 기존에는 개인폰이 플립4 이기도 했고 테스트용으로 갖고있는 것들이 있어서 emulator를 쓸일이 없었다. 하지만 이번에 아이폰으로 넘어가면서 emulator를 사용하게 되었다. 이러저러한 수정 후에 공지사항 상세보기 화면에서 문제가 발생했다. 해당 이미지는 1398 x 14,430 사이즈와 5,262,092 바이트(대략 5MB) 의 용량을 가지고 있었다. 다른 사진은 되는데 왜 이 사진은 같은 GlideApp 객체를 이용해서 같은 도메인에..
emulator에서 glide로 사진을 불러오지 못할 때 해결방법이번에 외주로 맡고있는 서비스의 안드로이드 앱 API를 33으로 업데이트하며 겪은 문제 중 하나다. 지금이야 서버나 데이터베이스 위주로 맡고있지만 이 외주서비스는 내가 안드로이드, 아이폰 앱개발, 일부 서버, 데이터베이스를 맡았기 때문에 간혹 내가 들어갈 일이 있다. 기존에는 개인폰이 플립4 이기도 했고 테스트용으로 갖고있는 것들이 있어서 emulator를 쓸일이 없었다. 하지만 이번에 아이폰으로 넘어가면서 emulator를 사용하게 되었다. 이러저러한 수정 후에 공지사항 상세보기 화면에서 문제가 발생했다. 해당 이미지는 1398 x 14,430 사이즈와 5,262,092 바이트(대략 5MB) 의 용량을 가지고 있었다. 다른 사진은 되는데 왜 이 사진은 같은 GlideApp 객체를 이용해서 같은 도메인에..
2023.06.22 -
분명 이전에 포맷하고 windows를 설치해서 wsl로 ubuntu를 설치했을 때 ssh접속이 잘됐었는데 다시 포맷해고 시도해보니 안돼는 문제가 생겼다 wsl-ubuntu에 ssh포트가 있지만 windows에도 ssh포트가 있고 windows가 먼저 받기 때문이다. 그러면 windows에서 wsl-ubuntu로 연결해주면 될거라고 생각해서 windows 포트포워딩에 대해 검색해보고 결과를 얻었다. 먼저 아래 명령어로 네트워크 인터페이스의 IPv4에서 IPv4로의 포트 프록시 구성을 확인할 수 있다. netsh interface portproxy show v4tov4 아무작업도 안했을 때는 그냥 빈 라인이 나올것이다. 이제 여기에 포트포워딩 규칙을 추가해보자. netsh interface portproxy..
내부망에서 다른 PC의 wsl에 ssh접속 안될 때 해결법분명 이전에 포맷하고 windows를 설치해서 wsl로 ubuntu를 설치했을 때 ssh접속이 잘됐었는데 다시 포맷해고 시도해보니 안돼는 문제가 생겼다 wsl-ubuntu에 ssh포트가 있지만 windows에도 ssh포트가 있고 windows가 먼저 받기 때문이다. 그러면 windows에서 wsl-ubuntu로 연결해주면 될거라고 생각해서 windows 포트포워딩에 대해 검색해보고 결과를 얻었다. 먼저 아래 명령어로 네트워크 인터페이스의 IPv4에서 IPv4로의 포트 프록시 구성을 확인할 수 있다. netsh interface portproxy show v4tov4 아무작업도 안했을 때는 그냥 빈 라인이 나올것이다. 이제 여기에 포트포워딩 규칙을 추가해보자. netsh interface portproxy..
2023.04.24 -
클라이언트에게 배포할 앱을 개발하며 문제가 생겼었다. 5분단위로 푸시가 발송되는데 어느순간 최신푸시가 안오고 멈춘다는 것이었다. Android 10(Q - API29) 부터 기존 50개에서 24개로 줄어들었다는 내용이 검색되긴 하는데 확신하진 못하겠다.. 테스트폰은 갤럭시 s10, flip4 그리고 기종은 잘모르는 클라이언트 폰들인데 공통적으로 24개이상일 때 푸시가 갱신이 안되는다는 내용이었다. 해결법은 간단하지만 서버에서도 작업을 해줘야 한다. 1. 서버파트 회사에서는 node.js + typescript 를 이용하고 있기지만 그리 어렵지 않게 이해할 수 있을 것이다. const message: TokenMessage = { data: pushData, token: doc['fcmToken'] as ..
푸시알람 24개 이상 띄워져서 최신 푸시가 안보일 때 해결방법클라이언트에게 배포할 앱을 개발하며 문제가 생겼었다. 5분단위로 푸시가 발송되는데 어느순간 최신푸시가 안오고 멈춘다는 것이었다. Android 10(Q - API29) 부터 기존 50개에서 24개로 줄어들었다는 내용이 검색되긴 하는데 확신하진 못하겠다.. 테스트폰은 갤럭시 s10, flip4 그리고 기종은 잘모르는 클라이언트 폰들인데 공통적으로 24개이상일 때 푸시가 갱신이 안되는다는 내용이었다. 해결법은 간단하지만 서버에서도 작업을 해줘야 한다. 1. 서버파트 회사에서는 node.js + typescript 를 이용하고 있기지만 그리 어렵지 않게 이해할 수 있을 것이다. const message: TokenMessage = { data: pushData, token: doc['fcmToken'] as ..
2023.04.08 -
지난 시간 nginx를 배포했을 때, NodePort를 이용해 외부에서 접근할 수 있었다. 쉽게 접근할 수 있는 방법이지만 문제가 있다. 1. 가용포트범위가 한정적이다.(기본설정 기준) 알다시피 기본설정에서는 30000-32767의 범위만 사용할 수 있다. 2. 관리가 불편해진다. 클러스터 내 각 Node는 해당 포트를 서비스로 프록시한다. 모든 Node에서 동일한 포트 번호가 사용된다는 것으로 사용자 스스로 포트 충돌의 가능성을 고려해야 한다는 의미이다. 물론 자유롭게 자체 로드 밸런싱 솔루션을 설정할 수 있는 장점 또한 존재한다. 중점은 진입구간이 너무 따로 논다는 것에 있다. 그래서 이런 진입구간을 모아서 Reverse-Proxy 처럼 서비스에 진입할 수 있게 해주는 것이 Ingress다. 1. I..
[Cloud Compute] Kubernetes 구축하기 - 6. Ingress 적용하기지난 시간 nginx를 배포했을 때, NodePort를 이용해 외부에서 접근할 수 있었다. 쉽게 접근할 수 있는 방법이지만 문제가 있다. 1. 가용포트범위가 한정적이다.(기본설정 기준) 알다시피 기본설정에서는 30000-32767의 범위만 사용할 수 있다. 2. 관리가 불편해진다. 클러스터 내 각 Node는 해당 포트를 서비스로 프록시한다. 모든 Node에서 동일한 포트 번호가 사용된다는 것으로 사용자 스스로 포트 충돌의 가능성을 고려해야 한다는 의미이다. 물론 자유롭게 자체 로드 밸런싱 솔루션을 설정할 수 있는 장점 또한 존재한다. 중점은 진입구간이 너무 따로 논다는 것에 있다. 그래서 이런 진입구간을 모아서 Reverse-Proxy 처럼 서비스에 진입할 수 있게 해주는 것이 Ingress다. 1. I..
2023.04.06 -
지난 글에서 nginx 서버를 배포해보았으니 이번에는 데이터베이스를 배포해자. nginx 같은 경우에는 stateless인 Deployment로 배포했는데 이번엔 다르게 진행되어야 한다. 기본적으로 데이터베이스는 데이터를 저장하는 것이고 이것은 날아가면 큰일나는 상황이다. 문제는 Deployment에서 Pod는 파리목숨과 같아서 날아가면 그 안의 데이터도 같이 날아간다. 이러한 경우에 사용하는 StatefulSet 이라는 것을 사용할 것이다. 그리고 PersistentVolume, PersistentVolumeClaim, Storage Class와 같이 뭔가 복잡해보이는 것까지 진행되기 때문에 내용이 많다. 갈길이 머니 서두르자. 1. 개념 시리즈의 목표는 구축과 실습이다. 그러니 개념은 빠르게 훑는 정..
[Cloud Compute] Kubernetes 구축하기 - 5. mysql + xtrabackup 배포하기지난 글에서 nginx 서버를 배포해보았으니 이번에는 데이터베이스를 배포해자. nginx 같은 경우에는 stateless인 Deployment로 배포했는데 이번엔 다르게 진행되어야 한다. 기본적으로 데이터베이스는 데이터를 저장하는 것이고 이것은 날아가면 큰일나는 상황이다. 문제는 Deployment에서 Pod는 파리목숨과 같아서 날아가면 그 안의 데이터도 같이 날아간다. 이러한 경우에 사용하는 StatefulSet 이라는 것을 사용할 것이다. 그리고 PersistentVolume, PersistentVolumeClaim, Storage Class와 같이 뭔가 복잡해보이는 것까지 진행되기 때문에 내용이 많다. 갈길이 머니 서두르자. 1. 개념 시리즈의 목표는 구축과 실습이다. 그러니 개념은 빠르게 훑는 정..
2023.04.06 -
지난 글에서 간단하게 어플리케이션을 배포하는 과정을 진행해보았다. 이번에는 nginx와 html을 배포해서 간단한 웹서버를 구축해보려고 한다. 어떻게 보면 지난글보다 이번글이 더 중요할 수 있겠다. 저번처럼 Pod를 배포하는 것이 아니라 Deployment와 Service를 배포할 것이고, 이것은 실제환경과 유사할 것이다. 진행에 앞서 Deployment와 Service에 대해 공부를 할 것을 추천한다. 1. Deployment 배포하기 둘 중에 뭘 먼저 배포하던지 Port만 일치시켜준다면 문제는 없지만 실습환경이니 먼저 Deployment를 배포해보자. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-server labels: app: serve..
[Cloud Compute] Kubernetes 구축하기 - 4. nginx 서버 배포하기지난 글에서 간단하게 어플리케이션을 배포하는 과정을 진행해보았다. 이번에는 nginx와 html을 배포해서 간단한 웹서버를 구축해보려고 한다. 어떻게 보면 지난글보다 이번글이 더 중요할 수 있겠다. 저번처럼 Pod를 배포하는 것이 아니라 Deployment와 Service를 배포할 것이고, 이것은 실제환경과 유사할 것이다. 진행에 앞서 Deployment와 Service에 대해 공부를 할 것을 추천한다. 1. Deployment 배포하기 둘 중에 뭘 먼저 배포하던지 Port만 일치시켜준다면 문제는 없지만 실습환경이니 먼저 Deployment를 배포해보자. apiVersion: apps/v1 kind: Deployment metadata: name: nginx-server labels: app: serve..
2023.03.01 -
지난 글에서 구축까지 진행해보았다. 이제는 어떻게 어플리케이션을 배포하고 통신을 할 수 있는지 알아보자. 0. 시작하기에 앞서 명령어 알아보기 지금까지는 그냥 따라왔다면 이제는 명령어에 대해 조금 더 알아봐야한다. 구축하는 과정에서 사용한 kubeadm 은 클러스터를 관리하는 명령어다. 이제는 kubectl 이라는 리소스를 관리하는 명령어를 사용할 것이다. 1. 리소스 관리 생성명령어 : create, apply 변경명령어 : apply 교체명령어 : replace 삭제명령어 : delete 확인명령어 : describe kubectl {command} 위의 형태로 관리하게 될 것이다. 이 외에도 많은 명령어들이 있으니 --help 플래그로 찾아보고 사용하면 된다. 2. 리소스 확인 리소스의 타입은 많지..
[Cloud Compute] Kubernetes 구축하기 - 3. 어플리케이션 배포하기지난 글에서 구축까지 진행해보았다. 이제는 어떻게 어플리케이션을 배포하고 통신을 할 수 있는지 알아보자. 0. 시작하기에 앞서 명령어 알아보기 지금까지는 그냥 따라왔다면 이제는 명령어에 대해 조금 더 알아봐야한다. 구축하는 과정에서 사용한 kubeadm 은 클러스터를 관리하는 명령어다. 이제는 kubectl 이라는 리소스를 관리하는 명령어를 사용할 것이다. 1. 리소스 관리 생성명령어 : create, apply 변경명령어 : apply 교체명령어 : replace 삭제명령어 : delete 확인명령어 : describe kubectl {command} 위의 형태로 관리하게 될 것이다. 이 외에도 많은 명령어들이 있으니 --help 플래그로 찾아보고 사용하면 된다. 2. 리소스 확인 리소스의 타입은 많지..
2023.02.26 -
처음 쿠버네티스를 도입하며 가장 애먹었던 부분이 이 구축파트다. 분명히 이전에 했을 때는 잘됐는데 초기화하고 다시 해보니 안되는 경우도 많았다. 특히나 네트워크 플러그인....하... 수없이 구축하며 문제없이 진행되는 것을 매뉴얼로 구성해서 팀원들에게 배포도 했다(안보는게 문제...) 이 내용은 사실상 매뉴얼을 기초적인 형태로 풀어쓰는 것에 지나지 않지만 이것만으로도 새로 구축하려는 누군가에게 도움이 됐으면 한다. 1. AWS EC2 생성 여기서는 기본적인 AWS EC2의 기본적인 사용법을 알고 있다는 가정하에 진행할 것이다. 인스턴스는 공식문서에 따라 최소치로만 구현할 것이다. 호환되는 리눅스 머신. 쿠버네티스 프로젝트는 데비안 기반 배포판, 레드햇 기반 배포판, 그리고 패키지 매니저를 사용하지 않는 ..
[Cloud Compute] Kubernetes 구축하기 - 2. 클러스터 구축처음 쿠버네티스를 도입하며 가장 애먹었던 부분이 이 구축파트다. 분명히 이전에 했을 때는 잘됐는데 초기화하고 다시 해보니 안되는 경우도 많았다. 특히나 네트워크 플러그인....하... 수없이 구축하며 문제없이 진행되는 것을 매뉴얼로 구성해서 팀원들에게 배포도 했다(안보는게 문제...) 이 내용은 사실상 매뉴얼을 기초적인 형태로 풀어쓰는 것에 지나지 않지만 이것만으로도 새로 구축하려는 누군가에게 도움이 됐으면 한다. 1. AWS EC2 생성 여기서는 기본적인 AWS EC2의 기본적인 사용법을 알고 있다는 가정하에 진행할 것이다. 인스턴스는 공식문서에 따라 최소치로만 구현할 것이다. 호환되는 리눅스 머신. 쿠버네티스 프로젝트는 데비안 기반 배포판, 레드햇 기반 배포판, 그리고 패키지 매니저를 사용하지 않는 ..
2023.02.16