[INITOS-YUNTAE] - Package Dependency Investigation - #18
Conversation
| ## Nix | ||
|
|
||
|  | ||
|
|
|
|
||
| ### Disadvantage | ||
| - 디스크 중복 증가 (거의 비슷한 패키지들의 내부적으로 거의 같은 의존성을 다르게 빌드해서 가져감) | ||
| - 중복되는 의존성 패키지가 저장됨 |
There was a problem hiding this comment.
만약 서버에 A, B 자바 기반 어플리케이션이 각각 JDK 17, 21을 사용하면
두개의 다른 JDK 경로가 메모리가 올라가니깐 디스크 뿐만 아니라 메모리도 중복으로 차지할까요?
There was a problem hiding this comment.
Java 관련 애플리케이션을 많이 써보지 않아서, 논리적으로 추론만해보자면
- Java 애플리케이션 (release) => .class/.jar 생성
- JRE 필요 (JVM ClassLoader -> 바이트코드 → (인터프리트 or JIT 컴파일) -> OS 위에서 네이티브 코드 실행)
고로 의존성에 문제가 있어 JDK 17, 21을 따로 써야하는 애플리케이션들이 존재한다면 JDK(JRE)가 별도로 필요하고 마찬가지로 디스크와 메모리 활용부분에서 손실이 발생 (재현성은 확실히 보장)
- JRE 필요 (JVM ClassLoader -> 바이트코드 → (인터프리트 or JIT 컴파일) -> OS 위에서 네이티브 코드 실행)
There was a problem hiding this comment.
반대로 Go 같은 경우에는 binary package마다 Go static runtime(mb 단위)이 포함되고, 프로세스 별로 runtime이 별도로 실행되어서 크게 문제가 없는데, Java 같은 경우에는 이런 문제도 있을 수 있음을 알아야겠네요
|  | ||
|
|
||
| - 순수 함수형 패키지 | ||
| - input이 같으면 result도 동일. (Reproducibility) |
There was a problem hiding this comment.
아하 다시 읽어보니 이해가 갔습니다.
같은 INPUT(설정)이니깐 결과가 동일하다...
생각난건 이번에 오라클 JDK 자료 조사를 급하게 시켜서 고생을 좀 했는데 확인해보니
특정 시스템에서 개발은 Redhat JDK 17을 쓰고 운영은 Oracle JDK 21 이런식으로 쓰더라구요.
실행되는 경로도 다르고 이게 참... 사내에도 규칙이 필요하겠구나 싶었네여
There was a problem hiding this comment.
그래서 Linux Filesystem 권장사항을 따라가든가, 상황/OS에서 권장하는 Filesystem 경로를 따라가는 것 같습니다. (bootc에서 경로 설명하는 그것과 유사한)

How Nix Works를 읽어보시면 CS 관점에서 유익할 것 같습니다.