전체 글(36)
-
12 Factors
SaaS(Software as a Service) -12원칙 1. 단일 코드베이스 - 하나의 어플리케이션은 버전 관리되는 하나의 코드베이스와 다양한 배포 - 분산 시스템에서는 각각의 시스템 단위로 하나의 코드베이스여야 한다. 2. 의존성 관리 단일화 - 모든 어플리케이션은 필요한 모든 의존성을 하나의 꾸러미에 담아야 한다. - maven project: pom.xml 에 모든 의존성 관리 3. 환경 설정 외부화 - 어플리케이션의 설정은 배포(개발/스테이징/Production)마다 달라질 수 있는 모든 것 (데이터베이스 리소스 핸들, 아마존과 같은 외부 서비스 인증 등) - 설정은 코드에서 엄격히 분리 - 여기에서는 어플리케이션 내부 설정을 포함하지 않는다. 어떻게 코드 모듈이 연결되는가 등등 - spri..
2020.11.06 -
JVM 이란
jvm은 간단히 얘기하면 java 실행 환경 이다. 이것을 아는 것은 왜 중요할까? 이는 jvm 이전의 프로그래밍 언어의 패러다임과 관련이 있다. 이전의 언어는 하드웨어를 직접 제어하기도, 메모리를 직접 관리하기도 했다. 이는 곧 특정 OS에 설치된 라이브러리에 의존하는 코드가 나오게 되고, OS가 바뀌거나 버전이 업그레이드 되면 영향을 받을 수 밖에 없다. 이 와중에.. Write Once, Run anywhere 라는 유명한 말과 같이 Java가 세상에 나오게 되며, 바로 저 말의 이면에는 JVM이 있는 것이다. 그렇다. 그 당시에 저 개념은 기존 소프트웨어 개발자들에게는 충격이었다. 이를 가능하게 하는 JVM은 개발자는 application 코드를 작성하고, 나머지 저수준의 메모리 관리 등은 가상머..
2020.10.30 -
Docker 기본 개념
application을 위한 하나의 독립된 가상화 플랫폼. Container 안에 application을 넣고, 필요 라이브러리, 시스템 도구 등을 넣어 문을 걸어 잠그면, 이 application은 Container 안에서 독립적으로 실행 된다. 이것이 왜 좋으냐고 한다면, 이 컨테이너 속은 언제나 같음을 보장하며, 이 동일한 플랫폼을 판화 찍듯이 쉽게 생성할 수 있기 때문이다. 즉, Docker를 사용하면 시스템 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있다는 것이다. 이렇게 얘기하면, 대개는 기존의 서버를 VM으로 쪼개 쓰는 것과 무엇이 다른가를 비교하곤 한다. 일단, docker는 소프트웨어 플랫폼이다. VM을 구성하든 안하든..
2020.10.26 -
Kubernetes 설치 가이드 - v1.11.3
※ CentOS 7 기준으로 작성됨. ※ 내부 베어메탈 서버에 쿠버네티스를 설치하는 가이드이며, 1.11.3 버전에 특화되었다. kubernetes.io 의 공식 가이드를 참조한 방식이며 100% 수동이다. 추후에는 분명 자동화된 설치방법이 나오겠지.. ※ 최소 요구 서버 수 - master를 single로 구성시에는 최소 master 1대, node 1대 총 2대. - master를 HA구성시에는 최소 master 3대, node 3대 총 6 대. (node가 3대 이하여도 설치도 되고 동작도 되나, 실제 서비스에는 그렇게 하지 말자) 1. Docker Install - kubernetes의 모든 host는 container 기반. docker는 가장 인기있고 보편적인 container. - verio..
2020.10.23 -
Spring Core - IoC, DI, Context And Bean
보통 main메소드에서 시작해서 개발자의 의도대로 오브젝트가 생성되고 실행된다. 그런데 서블릿은 컨테이너가 권한을 가진다. 그렇다. 이미 제어 역전은 폭넓게 적용되고 있는 것이다. 템블릿 메소드 패턴도 슈퍼클래스로 템플릿 메소드를 통해 제어를 넘긴 것이다. 이것도 Ioc를 기반으로한 패턴이다. 팩토리 패턴도 객체생성에 대한 제어를 애플리케이션 코드에서 분리하는 IoC의 적용 패턴으로 볼 수 있다. > 팩토리 클래스를 하나의 Configuration Context 로 보면 이해됨 ※ 라이브러리 VS 프레임워크 - 라이브러리는 사용자가 능동적으로 애플리케이션의 흐름을 직접 제어하면서 사용하는 것 - 프레임워크는 사용자의 애플리케이션 코드를 프레임워크의 기반하에 흐름을 주도하는 것이다. 즉, 프레임워크는 분명..
2020.10.22