![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/Bpz9A/btr3SZLAAgi/PkGJZkx1nWzCwxDzDUtkXK/img.png)
Private Registry 매번 Docker 이미지를 만들기 위해서 Dockerfile을 빌드하는 건 너무 오래걸린다. 때문에, 만들어 놓은 Docker 이미지를 docker registry에 저장(push)해놓고 다운로드(pull)해서 사용할 일이 생긴다. 그런데 내가 담당하고 있는 프로젝트가 외부로 노출되지 않게(private하게) 사용해야 할 경우 어떻게 해야할까? 기본적으로 사용되는 Docker Registry인 Docker Hub는, 아쉽게도 public Registry만 Free tier로 제공한다. 또한, Docker Hub에서 제공하고 있는 저장소는 로컬에 저장하는게 아니라 외부 저장소기 때문에 무작정 사용하기에는 너무 불안하다. 이러한 문제를 해결하기 위해 Private Contain..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cQrJa1/btr3fuqxcZf/fNUVcUXiWuhpIyU11N7FJk/img.png)
데이터 분산? 데이터를 한 곳에 보관하면 정보 관리 측면에선 좋을 수 있지만, 여러 가지 문제가 발생할 수 있다. 데이터가 늘어나면 데이터 베이스의 용량 이슈도 생기고, 느려지는 CRUD는 자연스레 서비스 성능에 영향을 주게 된다. 때문에 전략적으로 데이터를 분산화해서 관리해야한다. 데이터베이스 분산 전략은 몇 가지 있다. 복제(Replication) : 전체 데이터베이스 또는 그 하위 집합을 여러 서버에 복사하여 각 서버가 읽기 요청을 독립적으로 처리할 수 있도록 분산. 한 서버의 데이터에 대한 모든 변경 사항은 다른 서버로 전파하여 처리한다. 페더레이션(Federation) : 사용자 기반의 서로 다른 부분을 제공하는 여러 개의 작은 데이터베이스로 구성된 데이터베이스 생성 파티셔닝(Partitioni..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/T0L1M/btr2wuqJrPM/45ZXhADMSpb9VJcdKS0mH0/img.jpg)
robots.txt ? web 서버를 뒤적이다가 robots.txt란 파일을 발견했다. 파일을 열어보니 별 내용이 없었는데 User-agent: * Disallow: / 이런식으로 단 두줄만 작성되어 있었다. 대체 무슨 의미일까? 로봇 배제 표준(robots exclusion standard), 로봇 배제 프로토콜(robots exclusion protocol)은 웹 사이트에 로봇이 접근하는 것을 방지하기 위한 규약으로, 일반적으로 접근 제한에 대한 설명을 robots.txt에 기술한다. 이 규약은 1994년 6월에 처음 만들어졌고, 아직 이 규약에 대한 RFC는 없다. 이 규약은 권고안이며, 로봇이 robots.txt 파일을 읽고 접근을 중지하는 것을 목적으로 한다. 따라서, 접근 방지 설정을 하였다고..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bh40WT/btr1Ut19qch/kn54jsOHgPfBjVD28wu080/img.png)
REST API ? HTTP API? 여느 때처럼 AWS 제품군을 구경 중에 AWS API Gateway를 발견해 구경하고 있었다. 평소에 리버스 프록시 쪽에도 관심이 많았기 때문에 열심히 구경하고 있는데.... REST API와 HTTP API ? 이게 이렇게 엄격히 구분되는 개념이었나? 라는 생각이 먼저 들었다. REST API가 뭔진 알고 있는데, HTTP API는 뭐고 구분짓는 기준이 뭔지가 궁금했다. 우선 REST API에 대해 정리해보자. 좀 오래된 내용이지만 아래 유튜브를 참고했다. https://www.youtube.com/watch?v=RP_f5dMoHFc&t=1s&ab_channel=naverd2 REST API의 제약 조건 일단, HTTP API가 조금 더 넓은 범주를 이야기한다는건 ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cydKAJ/btr1nDC6B9f/rI98dLDfU37SGA3lvpNnh1/img.png)
Dockerfile을 작성할 때, 이미지를 빠르게 생성해보고 싶어 정작 Docker 홈페이지를 꼼꼼하게 보지 않았었다. 홈페이지에서 제공하는 내용은 간단한게 참고만 하고 넘어갔었다. 아래 페이지에서 Get started 정도만 확인하고 구글링을 하면서 Dockerfile을 작성했다. 그런데 잘 찾아보면, Docker 홈페이지에서는 Dockerfile을 "잘" 만드는 방법을 가이드해주고 있었다. Dockerfile 작성 모범 사례(Best practices for writing Dockerfiles) 페이지인데, 이 페이지에서 가이드해 주는 몇 가지만 짚어보고 넘어가려고 한다. 이 내용이 나오기 전에는 일반적인 Docker를 빌드하는데 유의해야 하는 내용들이 나온다. 예를 들어, 임시 컨테이너를 사용해라,..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/qZJ13/btr1nDQBNds/NOIcfBlCQTsj3L1kKRIR21/img.png)
1. String 자바에서 사용되는 String의 가장 큰 특징은 불변이라는 것이다. String 객체가 한번 생성되면 그 객체는 더 이상 수정할 수 없다. String 객체를 생성하는 방법은 아래와 같다. String str = "ABC"; // or String str = new String("ABC"); 앞서 언급한 것처럼 불변이기 때문에, 멀티쓰레드 환경에서 데이터 불일치에 대한 우려가 없기 때문에 사용하기 적합하다. 다만, 수정이 필요한 새 String을 생성해야 한다는 불편함도 있다. 때문에, 큰 문자열로 작업하거나 많은 수정을 수행할 때 비효율적으로 동작하게 된다. 2. StringBuffer Java 1.4까지는 문자열을 다루기위해서 StringBuffer가 유일한 방법이었다고 한다. St..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/120888 2. 풀이 코테에서 중복을 한번에 처리하는 Set은 흔하게 사용되는데, 이번 문제는 선입선출이 필요했다. 즉, 순서가 있다는 말인데 Set은 순서를 보장하지 않는다. 다행히 자바에서는 LinkdedHashSet이라는 순서를 보장해주는 Set 자료구조가 있어 이를 활용해 풀었다. 다른사람 코드를 둘러보던 중 chars가 stream처럼 동작한다는 걸 알게되었다. 그리고 확실히 stream게열이 자바에서는 직관적이고 좋은 개발방법인것 같다. String의 세부사항을 처리하는데 활용해봐야겠다. 너무 오랜만의 코테라 레벨 0부터 감을 잡아가고 있는데, 생각보다 공부가 많이 된다. 3. ..
1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/120907 2. 풀이 직전에 풀었던 풀이와 동일한 스타일로 풀었다. 가장 일반적인 접근은 공백(" ")으로 split을 한후 고정된 위치의 값을 얻고, 비교하면 것이다. 내 답안의 코드를 보면 알 수 있지만, 런타임 에러가 나는 경우는 15 - -5 = 10 위와 같은 테스트케이스가 들어오면 런타임 에러가 나니 주의가 필요하다. 개인적으로 스트림을 좋아하는데 인상깊었던 답안은 진짜 일반적인 자바코드에서 보기 어려운 길고긴 스트림을 썼다. 나도 저렇게 쓸 수 있는 날이 올까? 3. 코드 내 답안 import java.util.*; class Solution { public String[] s..
- Total
- Today
- Yesterday
- AWS EC2
- 람다
- Spring
- Log
- elasticsearch
- 후쿠오카
- lambda
- OpenAI
- Kotlin
- Elastic cloud
- 티스토리챌린지
- java
- JWT
- openAI API
- serverless
- 오블완
- springboot
- GIT
- MySQL
- cache
- docker
- OpenFeign
- AOP
- 스프링부트
- terraform
- EKS
- ChatGPT
- AWS
- CloudFront
- S3
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |